{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# How to solve systems of linear equation?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## General case $Ax=b$\n",
    "\n",
    "We need to solve the system of equations $Ax=b$. There are certain things that can happen.\n",
    "    * A is squared and has a full rank  (very good matrix)\n",
    "    * A is squared and doesn't have full rank. (Look underdetermined case below)\n",
    "    * A is underdetermined. It has more columns than rows.\n",
    "    * A is overdetermined. We have more equations than unknowns, or simpler more rows than columns.\n",
    " if $A$ has a rank deficiency, there is nothing you can do. Fix the problem formulation and start again."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Case 1: A is squared and has full rank. \n",
    "\n",
    "Best possible scenario. The system either has a unique solution or doesn't have any.\n",
    "To solve one can use Gaussian elimination or $x=A^{-1}b$.\n",
    "\n",
    "For large matrices the inversion or elimination may not be efficient then use LU decomposition, etc. If matrices have some further cool properties look at Cholesky decomposition..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from numpy import linalg as LA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Direct solution. Squared matrix\n",
      "matrix\n",
      " [[2 1]\n",
      " [3 1]]\n",
      "Solution solve [1. 0.]\n"
     ]
    }
   ],
   "source": [
    "## solve the system exactly\n",
    "print(\"Squared matrix\")\n",
    "A = np.matrix([[2,1], [3,1]])\n",
    "b = np.array([2,3])\n",
    "print(\"matrix\\n\", A)\n",
    "## solves the system by Gaussian elimination\n",
    "x_dir = np.linalg.solve(A,b)\n",
    "print(\"Solution solve\", x_dir)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Case 2: A is underdetermined\n",
    "Since at least one variable is unconstraint, in general there exists an infinite amount of solutions. But wikipedia says that there are other possiblities. Not interested in this for now.\n",
    "\n",
    "Since there is infinite amount of solution, we can pick the smallest one by minimizing $||x||^2$ subject to constraint $Ax=b$. To find this minimal vector, we need to use the method of Lagrange multiples (\\todo{check what are the assumptios for it}).\n",
    "By using this method, we add the constraint to the minimization function, so that now we seek for the minimum of the following function:\n",
    "\n",
    "$$L = ||x||^2 - \\lambda(Ax-b)$$\n",
    "\n",
    "To find $x$, we first find the derivative with respect to $x$, set it to 0, then find $\\lambda$ given $Ax= b$ and substituting $\\lambda$ back get $x$ as\n",
    "\n",
    "$$x = A^T(AA^T)^{-1}b$$\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Case 3: A is overdetermined.\n",
    "\n",
    "There are cases for which a unique solution exists, based on the linear independence of the rows.\n",
    "See https://en.wikipedia.org/wiki/Overdetermined_system#Non-homogeneous_case\n",
    "\n",
    "In general, if we are interested in an approximate solution (which  we are, when no unique one exists), here is where we can use the method called \"ordinary least squares\". We want to find a least-squares solution that minimizes the error $(Ax-b)$ (Not clear why are we looking for \"least squares solution\" and not some other kind of solution). To find this solution, we minimize\n",
    "\n",
    "$$L = ||Ax-b||^2 = (Ax-b)^T(Ax-b)$$\n",
    "\n",
    "To minimize, we compute the derivative over $x$, set it to 0. Since we have no $\\lambda$ involved here as oppose to underdetermined case, we can directly get $x$ as:\n",
    "\n",
    "$$x = (A^TA)^{-1}A^Tb$$\n",
    "\n",
    "Both these cases became more clear thanks to this post: http://people.csail.mit.edu/bkph/articles/Pseudo_Inverse.pdf\n",
    "\n",
    "**Question** Case 2 and Case 3 tell us how to find the solution. However, both of them include inverse of the matrix. Is there more efficient method for finding the solution for these cases? (SVD?)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let's check our thoughts with small examples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Case 1. Squared matrix size (2, 2)\n",
      "Gaussian elimination: [ 1.4 -0.7]\n",
      "Least squares closed form solution: [[ 1.4 -0.7]]\n"
     ]
    }
   ],
   "source": [
    "## Checking if ordinary least squares gives the same solution as Gaussian elimination for simple matrix\n",
    "## Case 1. Squared matrix\n",
    "A = np.matrix([[2,1], [3,1]])\n",
    "b = np.array([2,3])\n",
    "x_dir = np.linalg.solve(A,b) # Does Gauss elimination\n",
    "x_ls = (LA.inv(A.transpose()*A)*A.transpose()).dot(b)\n",
    "print(\"Case 1. Squared matrix size\", A.shape)\n",
    "print(\"Gaussian elimination:\", x_dir)\n",
    "print(\"Least squares closed form solution:\", x_ls)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Seems like least squares solution is pretty close to a real one for this case :)\n",
    "\n",
    "But A is a squared matrix. Btw, the coeffient of the matrix A are observed points taken from $y=kx+b$, where (x,y) points are (2,2) and (3,3). Let's make  A an overdetermined matrix B by adding another point (4,4). This should anyway work since 3 points describe the same line."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Case 3. Overdetermined size (3, 2)\n",
      "Least squares solution: [[ 1.00000000e+00 -1.77635684e-15]]\n"
     ]
    }
   ],
   "source": [
    "## Case 3. Overdetermined matrix. No noise.\n",
    "B =  np.matrix([[2,1], [3,1], [4,1]])\n",
    "c =  np.array([2,3,4])\n",
    "x3_ls = (LA.inv(B.transpose()*B)*B.transpose()).dot(c)\n",
    "# x3_dir = np.linalg.solve(B,c)  ---> This doesn't work, since matrix is not squared any more\n",
    "print(\"Case 3. Overdetermined size\", B.shape)\n",
    "print(\"Least squares solution:\", x3_ls)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case the least squares solution and exact solution coinside, since we have perfect measurements of the line. However, we can't find the exact solution by Gauss elimination, since matrix B is not squared.\n",
    "\n",
    "Let's add some noise to the matrices and check if the least squares solution is close to the previous one."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Case 3. Overdetermined + noise size (3, 2)\n",
      "Least squares solution: [[0.9        0.36666667]]\n"
     ]
    }
   ],
   "source": [
    "## Case 3. Overdetermined matrix. Added noise\n",
    "c_noisy = np.array([2.1, 3.2, 3.9])\n",
    "x3_ls_noisy = (LA.inv(B.transpose()*B)*B.transpose()).dot(c_noisy)\n",
    "print(\"Case 3. Overdetermined + noise size\", B.shape)\n",
    "print(\"Least squares solution:\", x3_ls_noisy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1280x320 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "## Visualization of the least squares solution\n",
    "fig=plt.figure(figsize=(16, 4), dpi= 80, facecolor='w', edgecolor='k')\n",
    "plt.subplot(121)\n",
    "plt.plot(B[:,0], c, 'bo');\n",
    "line = np.arange(0, 6, 0.1)\n",
    "\n",
    "f = x3_ls[0,0] * line + x3_ls[0,1]\n",
    "plt.plot(line, f, 'g-')\n",
    "\n",
    "plt.grid(linestyle='--', linewidth=1);\n",
    "plt.title(\"Perfect data\");\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(B[:,0], c_noisy, 'ro');\n",
    "plt.plot(B[:,0], c, 'bo');\n",
    "\n",
    "plt.plot(line, f, 'g-')\n",
    "f = x3_ls_noisy[0,0] * line +  x3_ls_noisy[0,1]\n",
    "plt.plot(line, f, 'r-')\n",
    "\n",
    "plt.grid(linestyle='--', linewidth=1);\n",
    "plt.title(\"Noisy data in red\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's check the underdetermined case now. For the line example this would mean that we just have 1 point given."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Case 3. Underdetermined size (1, 2)\n",
      "Least squares solution: [[0.8 0.4]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABAsAAAEkCAYAAABJ+LjzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAMTQAADE0B0s6tTgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzs3XdYVFfewPHvFJqCooixICgWYm/RxK4oKZa0d01V465mozFtk6wiMWJXUkxiS4wpmtVkE6NJdhOjomIFA7HGjljAgoIFUSlT7vsHYVYUpA3MzPH3eZ59NlzhzvlyB+Z4nHuvTtM0DSGEEEIIIYQQQog/6R09ACGEEEIIIYQQQjgXWSwQQgghhBBCCCFEAbJYIIQQQgghhBBCiAJksUAIIYQQQgghhBAFyGKBEEIIIYQQQgghCpDFAiGEEEIIIYQQQhQgiwVCCCGEEEIIIYQoQBYLhHBhly5don///vj6+hIQEOCwcZjNZnQ6HRs3bnTYGIQQQghnNGTIEIYPH15pj5ecnIy3tzfHjh2rtMcUjqHT6Vi3bp2jhyEUJosFQlSC3r174+7ujre3N9WqVaNVq1Z8/vnn5d7vJ598QmpqKufOnePUqVPl3t/ixYsrbdFBXuCEEEI4k5tfq1u2bMnChQsdPazbmjRpEt27dy+wLTAwkKtXrxIcHFyhj12Rr+Nbt27lkUceoXbt2nh7exMYGMjAgQP56aefKuTxKkLDhg357LPP7LKvypyfCXEjWSwQopKMHTuWq1evcunSJcLDwxk5cmSZ/yU+NzcXgKSkJFq0aIGHh4cdRyqEEELcmfJfqy9fvkxkZCSjR49m06ZNjh7WHWXp0qWEhYXRoUMHdu7cSWZmJgcPHuSFF15gxYoVRX5d/tzIlbjimMWdRRYLhKhkBoOBIUOG4Ofnx44dOwDIzs4mIiKCxo0bU6NGDXr27MmuXbtsX5P/Lwdvv/029erVo127doSGhrJkyRK+/fZbvL29GTVqFACnT5/mmWeeoX79+tSuXZunn36atLQ0276ysrKYMGECzZo1w8fHh+DgYJYsWcKWLVsYNWoUZ86cwdvbG29vb5YtW1Zow/nz53n88cfx9fUlODiYb7/9tsCfnz17loEDB3LXXXfh4+NDmzZtWL58ue3PW7ZsCcCgQYPw9vbmoYceAmD58uV07NiRGjVqUKtWLR5++GGOHz9uh++6EEIIUXJ6vZ4nnniCmjVrkpCQYNtusVh4//33ad68OdWrV6djx46sX7++wNe+++67BAYG4uvry8iRI4v9C2Fx+9yzZw+9evXC19eXGjVq0LFjRw4fPsyyZcuYMWMGcXFxttftLVu2cOLECXQ6HUePHgX+96/SCxYsICgoiKpVqzJ8+HAyMzMZPXo0fn5+1K1bt8C7KMr6Ol6S78/tXLt2jZdffplx48YRGRlJQEAAOp2OqlWrMmjQIL766ivb5xY2NwK4fPkyo0ePJigoCD8/P/r371/glIzixpj//Vq4cCENGzakevXqDB48mCtXrpS446GHHiI5OZmXXnoJb29v2/erqDHf/C6NG49hcfOzgwcP0q1bN7y9vWndujVbt24t8TiFKJYmhKhwvXr10t566y1N0zTNZDJpX331labT6bRNmzZpmqZpzz33nNa3b18tJSVFM5lM2ty5czV/f3/t0qVLmqZpWmRkpGYwGLTJkydrWVlZ2rVr12xf9+yzz9oeJzs7WwsJCdHeeOMN7erVq1pmZqY2ZMgQrV+/frbPefbZZ7VOnTppBw4c0KxWq3b69Gltx44dmqZp2pdffqnVr1+/2J6wsDDtgQce0C5cuKBduHBBGzBggAZoMTExmqZpWkpKirZixQotMzNTy83N1T777DPNaDRq+/bts+0D0KKjowvs99dff9V2796tmc1mLS0tTRs4cKB23333lfbbLYQQQpTaza/Vy5Yt0wDt559/tn1OZGSk1rZtW+3QoUOaxWLRVq5cqVWpUkU7evSopmmatmzZMs3X11fbtm2blpubqy1cuFAzGo3ac889V+TjFrfPrl27apMnT9ZMJpNmMpm0Xbt2aampqbav7datW4H9HT9+XAO0xMRETdPyXtsNBoP2xhtvaFlZWVpSUpJWo0YNrXnz5trKlSs1s9msLV++XDMajVpycrKmaWV/HS+upThr1qwpMPbbKWxuZLVatd69e2vPPPOMduHCBS07O1sbO3as1rx5cy03N7dEY8z/fr322mva9evXtTNnzmhNmjTRJk6cWKKGfEFBQdqiRYuKHbOm3fq9LOwYFjY/A7Q2bdpoiYmJmslk0l599VUtMDCwVOMU4nZksUCIStCrVy/Nw8NDq169uubn56d16NBBW7x4saZpmpaenq4B2qFDhwp8TZMmTbR//etfmqblvbjUq1dPs1qtBT7n5sWCFStW3PJ5p06d0gAtJSVFS0tL0wAtISGh0HGWZLEgf3979+61bdu7d2+BxYLCtGnTRpszZ47t48ImGTfbuXOnBmhXrly57ecJIYQQ5XXja7XBYNAMBoMWFRVV4HOqVaumrV69usC2fv36aVOnTrX99+uvv17gzzt06HDbxYLi9tm7d29txIgRhf6Fu6SLBR4eHra/LGuapj366KPa/fffX+DrfHx8tB9//LHIcZbkdby4luIsXbpUA7Tr16/btv38889a9erVtWrVqmkeHh7aiRMnNE0rfG60Y8cOzc3NTcvMzLRtM5vNmqenp7Zly5YSjbGw79ebb76pPfjggyVqyFfUYkFh87nyLBYsWbLE9vG+ffs0wLaYJER5yWkIQlSSN998k8uXL5Oens6OHTt47rnnAGxvE7z33nvx9fW1/e/06dMFLloYFBSETqe77WMkJiZy7tw5atSoYdtPy5Yt8fDwIDk52faW/pCQkDJ35I+pUaNGtm03/jfk3aXh+eefp1GjRlSrVg1fX1/279/P+fPnb7vvTZs20bdvX+rWrUu1atXo1asXQLFfJ4QQQthD/mv1pUuXGD58OGvXrsVsNgNw7tw5rly5wuDBgwu8XsfGxnL69Gkg7zXy5tfEmz++UUn2uXjxYnQ6HaGhoQQEBPDaa69x9erVUnXVqlULNzc328dVq1albt26BT6nSpUqZGZmAmV7HS9JS3H8/f0BCsx/BgwYwOXLl9mxYwc5OTlommb7s5vnRomJiZjNZgICAmyP7+fnB0BKSkqJx1jY9yv/e3OzLVu22E4PyD8V5HZKMp8rjXr16hUYJ1DkWIUoLaOjByDEna5OnToA7N27l8DAwCI/T68vfm2vTp06BAUFkZSUVOif51+74MiRI3Ts2LFMj5F/Nd4TJ07QqlUr23/fKDw8nEOHDrFp0yYaNGiATqejbdu2BV7gb36hzM3NZeDAgUycOJEff/wRHx8fdu3aRYcOHQp8nRBCCFHRfHx8mD9/Ps2bN2f+/Pm8+uqr+Pr64unpyc8//0zPnj0L/bqAgIBbXhNvfL28WUn2GRQUxKJFi4C8f2B45JFHqFq1KtOnTy/R63ZZlOV1vCQtxenatSvVq1dn2bJlTJo0qdjPv7m/Tp06uLu7k5aWVuAv+/lycnLKPcab9ejRo9DFm6KOTWHbvb29uXbtmu3jM2fOlGhfQlQ0eeYJ4WBBQUE8+uijjBkzhpMnTwJ5K8K//vorZ8+eLdW+Hn/8cUwmE2+//TYZGRlA3r/K51+A0N/fn6effpoxY8Zw+PBhIO8iRjt37gTyXmTT09O5cOFCkY9Rv359+vbty9ixY7l06RKXLl0iIiKiwOdkZGRQpUoV/Pz8MJlMzJ07l/379xf4nDp16tjGAHmLBVlZWdSoUQMfHx/OnDnDhAkTStUvhBBC2IuHhwcTJ05k6tSpZGRk4OHhwahRoxg7diwHDx5E0zSysrLYvHkzR44cAeC5557jiy++YPv27ZjNZj777DP27Nlz28cobp+LFy/m1KlTaJpGtWrVMBqNGI15/95Xp04dkpOTyc7Otmt7WV7HS9ICeYsMixcvLvRxvb29+eijj4iKimLq1Km27uzs7BJduK979+60atWK0aNH294FcenSJVasWMH169dLPEZ7uPn7czv33HMPixcvJjs7m3PnzjF58uRb9lXc/EyIiiCLBUI4ga+//pqOHTsSFhaGj48PISEhLFq0qNT/ou7j40NcXBzJycm0bt2aatWq0bVrVzZv3mz7nEWLFtGrVy8eeughvL296datm20CEBoayiOPPEKzZs3w9fXl66+/LvRxli5diru7Ow0bNqRDhw48+eSTBf582rRpZGVlcdddd9GwYUPOnTtHt27dCnzOzJkziYqKwtfXl4EDB+Lt7c1nn33GtGnTbFdWHjx4cKn6hRBCCHsaOnQofn5+REVFAfDee+/x9NNP297G3rBhQ2bOnInJZALg2WefZezYsQwePJhatWqxfft2Hnvssds+RnH7jImJoXPnznh7e9O2bVu6dOnCuHHjAHjyyScJCQmhXr16+Pr62u1K+GV5HS9Jy8mTJzEajbfs60bPPfccq1evJj4+nnbt2uHt7U1ISAjLly/np59+IigoqMivNRgMREdHU6VKFe699158fHxo27YtP/zwg+2dEMWN0V4mTpzITz/9hK+vL23atLnt586fP5/U1FRq1apFWFgYQ4cOLfDnJZ2fCWFvOk3e3yuEEEIIIYSoYIsWLWL37t3Mnz/f0UMRQpSALBYIIYQQQgghhBCiADkNQQghhBBCCCGEEAXIYoEQQgghhBBCCCEKkMUCIYQQQgghhBBCFCCLBUIIIYQQQgghhChAFguEEEIIIYQQQghRgNHRA/Dw8MDf39/RwxBCCCEcJi0tjZycHEcPQ3ky5xBCCHGnK82cw+GLBf7+/pw6dcpu+9M0jczMTHx8fNDpdHbbryOo1AJq9ajUAtLjzFRqAbV67NkSEBBgp1GJ25E5R9FUagHpcWYqtYBaPSq1gFo9jppzKHcagtlsJiYmBrPZ7OihlJtKLaBWj0otID3OTKUWUKtHpRZRNio9B1RqAelxZiq1gFo9KrWAWj2OalFusUAIIYQQQgghhBDlI4sFQgghhBBCCCGEKKDUiwWvvPIKDRs2RKfTsXv3btv2xMREunbtSrNmzejUqRP79++360BLw2h0+KUY7EalFlCrR6UWkB5nplILqNWjUoszkjlH5VKpBaTHmanUAmr1qNQCavU4okWnaZpWmi/YvHkzwcHBdO/enR9//JF27doBEBoayrBhwxg+fDjff/89UVFRJCQkFLu/gIAAu15sSAghhHA18lpYOJlzCCGEEPZVmtfCUr+zoGfPnrdcQfH8+fP8/vvvDBkyBID/+7//IyUlhaNHj5Z29+VmtVo5f/48Vqu10h/b3lRqAbV6VGoB6XFmKrWAWj0qtTgrmXNUHpVaQHqcmUotoFaPSi2gVo+jWuzyXoaUlBTq1q1re2uETqcjMDCQ5ORkmjRpUuzXm0wm23/r9XoMBgMWi6XANyN/u9ls5sY3QxgMBvR6vW27yWQiLi6OBx98EA8PjwL7hv+9fePmK0kWtd3NzQ2r1YrFYrFt0+l0GI3GIrcXNfbSNuXk5BAXF0dYWBhubm627a7aZLFYCvTc2OpqTfnPs/79+2O1Wgs9fq7UdPPPTVHPSVdpys3NtT3XPD09C/yOcLUmq9Va5M+NKzbl/x64//77C7ydzhWb8n9uHnjgATw9PYt9fSquSZSMzDkKbpc5h/pzDsD2WlDU705XapI5h/M2yZzDeZscNeeo9BMfZs+ezezZs20fZ2RksGrVKtvHgYGBtG/fnr1795KcnGzbHhISwt133018fDxpaWm27e3atSMoKIjNmzeTmZlp237hwgXq1avH2rVrCxzAPn364OXlVeAxAfr3709WVhYxMTG2bUajkQEDBpCenk5cXJxtu4+PD6GhoaSkpBQ4h9Lf35+uXbuSmJjI4cOHy90UGxsLQHR0NABdunShdu3aLttUr169Aj2u3pTv5ueeKzedPn2a4OBgZZqio6OL/B3hKk2NGze2teRz5ab8v8zt3LmT9PR0l2z6MuZL3C674evmC0BSUhItW7Ys8etTUU3C/mTOIXMOVeYcrVu3BiA2NparV68q0SRzDudrkjmH8zX9e/O/uZp2lToedYDKn3OU+poF+Ro2bGg7f/D8+fM0adKEixcvYjQa0TSNunXrsnXr1mJX+QMCAjh+/LjtY3us8kdHRyuxyp+VlcXatWuVWuVftWqVEqv8+c+z/v37o9PpXGZVsqimm39uXGmltbCm3NxcoqOjlVnlL+rnxhWbLBYLa9ascclV/n1p+5iwcQKrElcxuuNo3gt9j+joaLus8jdq1EjOpb8NmXPInONOnnNA3jsLVq9ercw7C2TO4ZxNMudwnqaky0lEborku/3f8fjdj/OvQf9yyJzDLu8sqF27Nh06dGDp0qUMHz6cFStWEBAQUKK3AwK2J+ONDAYDBoPhlu03HujCtut0Onx8fGxfW9i+S7tdr9ej1996eYeithc19tI2ubm54ePjg7u7e4HPcdUmq9VaaE9px17U9spsyn+e5f+Al3fsRW2vrKabf25UaMp/ruXv01WbNE0r8ufGFZvyn2tubm6Fjt8Zm05cPsHbMW+zbO8yNDSeavUUr3d9HXd3d3x8fGxjLu71qaRjF7cnc46SjV3mHOrMOSDvLyO3+93pSk0y5yjfdplzqD3nSL2aypRNU1i0cxFmq5mBzQYyqfckh805Sv3OghdeeIFffvmF1NRU/Pz88PHx4ejRoxw+fJjhw4dz4cIFqlWrxpdffml7y9TtyJWJhRBCOKO0a2lM3zKdBQkLMFlN3N/4fmb2nUmHuh3s/ljyWlg4mXMIIYS4E2RkZ/Bu7Lt8sP0Drpuu0yWgC1H9ougR1MPuj1Wa18Iyn4ZgL/Z+4bZaraSkpNCgQYNCV21ciUotoFaPSi0gPc5MpRZwjZ6ruVeZHTeb92LfIzM3k3vq3UNUvyhCG4UW+Dx7tshfYiuHzDmKplILSI8zU6kF1OpRqQVcoyfbnM2ChAXM2DKDC1kXaOHfghmhM3g45GF0Op3t8xw153DO71o5WCwWdu/eXeBcEFelUguo1aNSC0iPM1OpBZy7J9eSy7z4eTSe05jIjZHU8a7Dd3/5jviR8bcsFIBzt4jKodJzQKUWkB5nplILqNWjUgs4d4/FamHx7sWEzAvhjbVvUMWtCl88/AV7R+3lkbsfKbBQAI5rqfS7IQghhBDOxKpZ+Xbft0yImcCxS8eo612XTwZ8wt/a/w03g1xXQAghhBD2oWkaPx/5mfHrx7M/bT81vWryXth7jOk8Bk+jp6OHdwtZLBBCCHFH0jSNtUlrGb9+PLtSd1HdozozQmfw6n2vUsWtiqOHJ4QQQgiFbEvexrh149iWsg0voxcR3SP4Z7d/4uvp6+ihFUm5xQKdToe/v/8tb91wRSq1gFo9KrWA9DgzlVrAeXriT8cTvi6cmBMxeBg8eKPLG4zvPh6/Kn4l3oeztAjHUek5oFILSI8zU6kF1OpRqQWcp2ff+X1ErI/gv0f+i0Fn4IWOLzCx10Tq+dQr8T4c1aLcBQ6FEEKIohxOP8xbG95ixcEV6HV6nmv7HJN6TyKweqBDxyWvhZVDvs9CCCEqS3JGMpEbI1myewkaGoNbDGZa6DSa+TVz6Lju+AscHjp0yCkvZFFaKrWAWj0qtYD0ODOVWsBxPWcyz/DCf1+g5YKWrDi4gkdCHmHvqL188cgXZV4oUO3YiNJT6TmgUgtIjzNTqQXU6lGpBRzXc+H6Bd5Y8wbN5jZj8e7F9GnUh/iR8Xw3+LsyLxQ4qkW5xQKr1crhw4exWq2OHkq5qdQCavWo1ALS48xUaoHK77mcfZnx68bTZE4TPt35KV0bdGXb37bx41M/0rJ2y3LtW7VjI0pPpeeASi0gPc5MpRZQq0elFqj8nmu515i+eTrBc4KZvX02LfxbsGbIGtYNXUen+p3KtW9HHRvlrlkghBBCZJmymBc/j5lbZ3Ip+xKtardiVt9Z9G/a3+HnLgohhBBCHSaLic93fc7kTZNJvZpK4xqNWThwIU+0fAK9zrX/bV4WC4QQQijDbDXz1Z6viNwYyakrpwisHsiHD37Is62fxaA3OHp4QgghhFCEVbPy/YHvmbBhAokXE6ldtTbzHprH8x2fx93g7ujh2YVyiwV6vZ7AwED0etdexQG1WkCtHpVaQHqcmUotUHE9mqbx0+GfiFgfwcH0g/h5+fHBAx8w+p7ReBg97PpY+VQ7NqL0VHoOqNQC0uPMVGoBtXpUaoGK7Vl3bB3h68LZcXYHPu4+TOk9hX90+Qfe7t52fyxw3LGRuyEIIYRwaZtPbiZ8XThxp+Ko4laF1+97nTe7vkl1z+qOHlqJyWth5ZDvsxBCiPLYeXYn4evCiT4WjbvBnRfveZGIHhH4V/V39NBK7I6/G8KuXbuUuIqnSi2gVo9KLSA9zkylFrBvzx/n/mDg1wPptbgXCWcSePGeF0l6JYmpoVMrZaFAtWMjSk+l54BKLSA9zkylFlCrR6UWsG/P0YtHeer7p+j4aUfWHVvHsLbDOPzSYT548INKWShw1LFRbrHAarWSnJysxFU8VWoBtXpUagHpcWYqtYB9ek5cPsGwH4bR9pO2/JL4C0+2fJKDYw4yf8B86njXseNob0+1YyNKT6XngEotID3OTKUWUKtHpRawT0/q1VRe/OVFms9vzrf7v2VA0wHsHrWbJY8uoaFvQ/sNthiOOjbKXbNACCGEmtKupTF9y3Q+/v1jci25hAWHMbPvTDrW6+jooQkhhBBCIRnZGbwb+y4fbP+A66brdAnoQlS/KHoE9XD00CqVLBYIIYRwaldzrzI7bjbvxb5HZm4m99S7h1l9Z9E3uK+jhyaEEEIIheSYc1iQsIDpW6ZzIesCLfxbMCN0Bg+HPHxH3npZucUCvV5PSEiIElfxVKkF1OpRqQWkx5mp1AKl68m15LJoxyKmbJ7C+WvnaVqzKZ+Hfs5fWvzFKV6wVTs2ovRUeg6o1ALS48xUagG1elRqgdL1WKwWlu5dysSNE0nOSCagWgBfhH3BsLbDnOLWy446NnI3BCGEEE7Fqln5dt+3TIiZwLFLx6jjXYdJvSbxt/Z/w83g5ujhVQh5Lawc8n0WQghxI03T+CXxF8avH8++8/uo4VmDiB4RjOk0Bi83L0cPr0Lc0XdDMJvNxMbGYjabHT2UclOpBdTqUakFpMeZqdQCt+/RNI01R9dwz6f38MzKZ0i/ns700OkcffkoL9zzgtMtFKh2bETpqfQcUKkFpMeZqdQCavWo1ALF98SmxNJzcU8GfTOIpItJjO8+nmOvHuPNrm86x0JBTg4sXQrbtjns2Ch3GoKmaaSlpeHgN0zYhUotoFaPSi0gPc5MpRYouifhdALh68PZcHwDHgYP3ujyBuO7j8evip+DRlo81Y6NKD2VngMqtYD0ODOVWkCtHpVaoOie/ef3E7Ehgv8c/g8GnYG/d/g7kb0jqedTz0EjvcnZs7BwIXzyCZw7B4MGoa1Y4ZBjY9d3FqxatYoOHTrQrl07WrVqxZIlS+y5eyGEEIo5cuEIg5cPpvNnndl4YiN/bfdXjrx8hPfuf8+pFwqE48mcQwghRGkkZyTz15/+SptP2vCfw//hLy3+wv4X97Nw0ELnWCj47Td49lkICoLJk8HTE959FxYvdtiQ7PbOAk3TGDJkCBs3bqRNmzacOHGCu+++m8cffxwfHx97PYwQQggFnMk8w4xtM/h81+dYNAsPhzzMjNAZtKzd0tFDEy5A5hxCCCFK6sL1C7z323vMi59HjiWH0EahzOo7i071Ozl6aHmnGixfDnPmQEJC3rY+feCVV2DQIDD8eXFFk8khw7PraQg6nY7Lly8DcOXKFfz8/PDw8LDnQxTLYDDQrl07DAbHX7WyvFRqAbV6VGoB6XFmKrUAZJoyWWtZy9MfP02WOYvugd2Z1XcW3QK7OXpopabasXE1MuewL5VaQHqcmUotoFaPSi0A2ZZstum3MezjYVzJuUK7Ou2I6hdFWHCY4++qdPOpBl5e8Pe/w0svQevWt3y6o46NXe+GsG7dOp566imqVq3KpUuXWLlyJf369bvt1wQEBHD8+HHbx3q9HoPBgMViwWq13rLdbDYXOFfDYDCg1+uL3G66aRXGaMxbH7n54hBFbXdzc8NqtWKxWGzbdDodRqOxyO1FjV2apEmapOlObco2Z7Pg9wVExUZxKfsSLf1bMrX3VAY0GYBOp3PJppu3l+c4NWrUSK7SX0oy57hzf59IkzRJkzTdrslkMfHlni+ZtnUaqVdTCfYNZlKvSTzR4gn0Or1jm+LiYM4cdCtWoDOZ0IKC0I0Zg2X4cKy+vkU23by9suYcdntngdlsZtq0aaxcuZKePXuSkJDAww8/zB9//EGtWrVsnzd79mxmz55t+zgjI4NVq1bZPg4MDKR9+/bs3buX5ORk2/aQkBDuvvtu4uPjSUtLs21v164dQUFBbN68mczMTNv2zp07U7duXdauXVvgAPbp0wcvL68CjwnQv39/srKyiImJsW0zGo0MGDCA9PR04uLibNt9fHwIDQ0lJSWF3bt327b7+/vTtWtXEhMTOXz4cLmbNm3axNWrV23bu3TpQu3atV22qX79+vz6668FnvCu3OTh4UG/fv1uee65clPr1q0JDg5Wqqmo3xGu0tSkSRNWr15d4AXHlZp27t7JV3u+4pvUb7hgukDdKnUZ22wsAxoM4FLiJX5N/NXlmm4+Tk2bNqVFixblfu6JkpM5h8w5imtSbc7RunVrTpw4gaZpyhwnmXM4X5Orzzn27NnDN3u/4evUrzmTcwY/Dz9ebvwyjwc9TsbJDFafXO2QJr3JRPCOHbTcsAF9fDwAaa1bc2zAACz9+9O1Rw8SDx3icGxsscepsuccdntnwe+//84zzzzDkSNHbNs6derEjBkzCAsLK/Lr7L3KbzKZiI6O5sEHH8TDw8MpV7tK2pSVlcXatWsJCwvDzc3NqVfwStJksVhYtWqVrefGVldryn+e9e/fH51O5zIrrUU13fxz40qrx4U15ebmEh0dTVhYGJ6eni63In7jdqsfOXcDAAAgAElEQVTVWuTPjTM36XQ6fjmad9/ig+kH8fPyI7xbOCPbjmTT+k3cf//9tsd3laZb/uXiz5+bBx54AE9PT3lnQSWSOYfMOYprUmnOAWC1Wlm9enWRvztdqUnmHM7b5KpzDr1ez8aTGwlfF87vZ3/Hx92H1+97nZc6vsS2mG2Om3OcOoV+0SL0ixah+/NUA23IEMyjRtlONXD2OYfd3lnQoEEDzp49y8GDB2nevDlHjx4lKSmJkJCQYr82/8l4I4PBUOg5GTce6Ntt1+v1Re67tNv1er1tfyXZXtTYy9rk5uZWYFyu2pT/w35zT2nHXtR2Rx+nkoyxtNsruyl/n67elP9L0s3NzeWb8l84Cvu5cdamLSe3EL4+nNiUWKq4VWFCjwm82fVNqntWt71YGY3GQh/XWZtutz3/v+31O0IUT+Yc/yNzjjtjzlHc705XbHL112eQOUdpx17U9vI07Ty7k/B14UQfi8ZN78ar977KWz3ewr+qv+PmHL/9hn7OHPTLl+ddmDAoCN55B0aMQFezJoXtxVnnHHZbLLjrrrv49NNPeeKJJ2wrU/PmzSMwMNBeDyGEEMKJ/XHuD8avH88vib9g1BsZfc9o3u75NnV96jp6aEIxMucQQog729GLR5mwYQLf7v8WHTqGthnKlD5TaOjb0DEDyr+rwdy58OepBoXe1cDF2PUCh2UREBBg17deWq1W0tPTqVWrVqErUa5EpRZQq0elFpAeZ+YKLScun2BizESW7l2KhsaTLZ9kWug0mtRscsvnukJPSdmzxd6vhaJwMucomkotID3OTKUWUKvHFVpSr6YyddNUPt35KWarmQFNBzCj7wza3NXmls+tlJ7C7mowdGiRdzUoK0fNOZRbLBBCCFE50q+nM33zdBb8voBcSy5hwWHM7DuTjvU6OnpoLkdeCyuHfJ+FEMI1Xcm5wrvb3mX29tlcN13nvoD7iOoXRc+gno4Z0G+/wZw5ee8myD/VYMwYGDECatZ0zJhKqDSvhc65ZFQOJpOJX3755ZYLU7gilVpArR6VWkB6nJkztlzNvcrUTVMJ/iiYD3/7kNa1WxM9NJq1Q9cWu1DgjD1lpVKLKBuVngMqtYD0ODOVWkCtHmdsyTHn8OH2D2k8pzHTtkwjqHoQPzz5A7F/iy12ocDuPTk5sHQp3Hsv3HcffP01dO8OP/wASUnwz39W2EKBo46N3a5Z4ExUuhWVSi2gVo9KLSA9zsxZWkwWE4t2LmLKpimcu3aOJjWb8FnoZ/ylxV/Q60q+9uwsPfagUosoG5WeAyq1gPQ4M5VaQK0eZ2mxWC0s+2MZE2MmcjLjJAHVAvj84c8Z1nYYRn3J/wprl57CTjX4+9/tfqpBcRxxbJRcLBBCCGE/Vs3Kd/u/Y8KGCSRdSqKOdx0+HvAxI9qPwM0gV/QXQgghhH1omsYviXm3Xt53fh81PGvwTr93eKnzS3i5eVXuYH77Le+Chd99d8tdDZz9VAN7kcUCIYQQhdI0jehj0YSvC2dX6i6qeVRjWp9pvHbfa1R1r+ro4QkhhBBCIbEpsYxbN46tyVvxMnoR3i2ccd3H4evpW3mDyM3Nuw7BnDlK3dWgrJS7wKGmaWRmZuLj44NOp7Pbfh1BpRZQq0elFpAeZ+aoloTTCYSvD2fD8Q24G9x5qdNLRPSIwK+KX7n2K8emcHLhvcohc46iqdQC0uPMVGoBtXoc1XIg7QAR6yP46fBPGHQGRrQfQWTvSOr51CvXfkvVU9ipBkOGwMsvV+qpBkVx1JxDyXcWeHlV8ltUKpBKLaBWj0otID3OrDJbjlw4woQNE1h+YDl6nZ7h7YYzufdkAqvb7/71cmyESlR6DqjUAtLjzFRqAbV6KrMlJSOFyI2RLNmzBKtm5S8t/sK0PtMIqRVit8cotufmUw0CA532VANHPM+UuxuC2Wxm1apVTnNxjvJQqQXU6lGpBaTHmVVWy9nMs4z6eRQt5rdg+YHlPBzyMHtH7eXLR76060KBHBuhEpWeAyq1gPQ4M5VaQK2eymq5cP0Cb659k6Zzm/Ll7i/pFdSL30b+xvLBy+26UFBkT24uLFv2v7saLFuWd1eDlSsr/K4GZeWo55mS7ywQQghRMpezL/POtnf4cPuHZJmz6NagG7P6zaJ7YHdHD00IIYQQCrluus5H2z8ialsUGTkZtKvTjll9Z3F/4/sr57SH/FMNFi6E1NS8Uw2ef95pTjVwRrJYIIQQd6Bsczbz4ucxc+tMLmZdpKV/S2b2ncnAZgNd/pxLIYQQQjgPk8XEF7u+YPKmyZy9epbgGsF8POBjnmz1ZKluvVxWuvh4+PhjlzjVwNnIYoEQQtxBLFYLX+35isiNkaRcSSGweiCz75/NkDZDMOjvrCv8CiGEEKLiaJrG9we+560Nb5F4MZHaVWsz96G5/L3j33E3uFfsg+fmovvmG3pOn44xMTFvW58+ee8iGDQIjPLX4JJQ8m4IZrMZo9Ho8v86plILqNWjUgtIjzOzV4umafzn8H+I2BDBgbQD1PSqyYQeExjdaTSeRk87jrj4ccixuZXcDaFyyJyjaCq1gPQ4M5VaQK0ee7ZsOL6B8HXhJJxJwNvdm392/Sevd3kdb3dvO422CKmpeXc0+PNUA83LC559Ft0rr7j0qQaOmnMod4FDgKysLEcPwW5UagG1elRqAelxZuVt2Zq8le5fdufRbx/lxOUTvNXjLY69cox/dPlHpS4U5JNjI1Si0nNApRaQHmemUguo1VPell1nd/HA0gfo+1Vfdqfu5tV7X+XYK8eY2GtixS4U/PZb3q0OAwNh8mRwd0eLiiLzwAH49FOXXijI54jnmXKLBWazmZiYGGWuSKpKC6jVo1ILSI8zK0/LH+f+YNA3g+jxZQ9+O/Ubo+8ZzdGXjzItdBrVPatXwGiLJ8dGqESl54BKLSA9zkylFlCrpzwtSReTeHrF03T4tAPRSdEMaTOEwy8d5sMHP8S/qn8FjJZi72pg/sc/iNmz544/NuUhJ2sIIYRiTl4+ycSNE/nXnn+hofFEyyeY1mcaTf2aOnpoQgghhFDIuavnmLp5Kgt3LMRsNdO/aX9m9p1Jm7vaVNyD3nSqQZF3NTCZKm4MdwhZLBBCCEWkX09nxpYZzE+YT64ll37B/ZjVdxYd63V09NCEEEIIoZArOVd4L/Y9ZsfN5prpGvcF3EdUvyh6BvWsuAeNj4c5cwre1SAqKu+uBn5+Ffe4dzAlFwuMCl3dUqUWUKtHpRaQHmdWXMu13Gt8sP0D3o19lys5V+hYtyOz+s2iX3C/Shph6dxJx0aoT6XngEotID3OTKUWUKunuJYccw4f//4x07dMJ/16OnfXupuZfWfySMgjFXOBx9xcWL48b5EgPj5vW+/e8MorJbqrwZ10bCqCcndDEEKIO4XJYmLRzkVM2TSFc9fO0aRmE6b1mcbgloMr5b7Fwn7ktbByyPdZCCHKxmK1sOyPZUyMmcjJjJPU96nP5N6Tea7dcxj1FfCX2MJONRgy5NZTDUSp3dF3Q7BarZw/fx6r1erooZSbSi2gVo9KLSA9zqywFqtm5d/7/k3z+c0Zs2oMAAv6L+DAiwd4stWTTr1QoPqxEXcWlZ4DKrWA9DgzlVpArZ7CWjRN45cjv9B+YXue+/E5ruRc4Z1+75D4ciIjOoyw/0JBfPwtdzUgKgpSUkp9VwPVj01lsOuMMicnh5deeommTZvSunVrhgwZYs/dl4jFYiEuLg6LxVLpj21vKrWAWj0qtYD0OLObW6KToum0qBNPr3iatOtpTOszjaRXkhjdaTRuBjcHj7Z4Kh8bUblkzmFfKrWA9DgzlVpArZ6bW+JS4ui1uBcDvxlI4sVEwruFk/RKEv/s9k+83Lzs98D5dzW47768OxssWwbdutnuasDYsWW6JoHKx6ay2HUpKDw8HJ1Ox5EjR9DpdKSmptpz90IIccfacXYHEzZOYP3x9bgb3Hn9vtcZ32M8tarUcvTQhHAImXMIIUTFOJB2gMjNkfx0+CcMOgPPd3ieyF6R1K9W374PlJqad5rBJ58UvKvBSy9Bmwq8m4IoMbstFly7do3PP/+cU6dO2S5uUadOnRJ9remG21ro9XoMBgMWi6XA2yzyt5vNZm68zILBYECv19u25+8r/2tNN90yI//CEDffo7Ko7W5ublit1gKrODqdDqPRWOT2osZelqYbG/K3u2pTvhvH76pNN463qOPnSk03/9y4elP+OE0m0y2/I1ytKfFiIu+ceIfY3bHo0DG09VAm955Mo5qNCrS6SlP+1978mK54nPLHZLFYcHNzK/b1qbgmUXIy55A5R3FN+Vztd2RRTTe+Pt/IFZtkzuG8TSlXUpibPJeYPTFYNSuPhTzG9NDpNK/d3K5zDl1CAvp589B9/z06kwktMBDrjBlY//pX8PPLGzvInMMJ5hx2WyxISkqiZs2azJgxg3Xr1uHl5cWkSZPo27dvgc+bPXs2s2fPtn2ckZHBqlWrbB8HBgbSvn179u7dS3Jysm17SEgId999N/Hx8aSlpdm2t2vXjqCgIDZv3kxmZqZt+8WLF6lbty5r164tcAD79OmDl5dXgccE6N+/P1lZWcTExNi2GY1GBgwYQHp6OnFxcbbtPj4+hIaGkpKSwu7du23b/f396dq1K4mJiRw+fLjcTbGxsQBER0cD0KVLF2rXru2yTfXr10ev19t6XL3Jw8MDnU53y3PPlZtOnz5NcHCwMk3R0dFF/o5w9qaLpousyV7D98e+x6JZ6FStE0PqDiHIEIQ+Uw81cbkmgKZNm+Lj48POnTtJT0+3bXfV4wRw7NgxWrRoUeLXp6KaRMnJnEPmHMU1qTbnaN26NT4+PsTGxnL16lUlmmTO4TxNmeZMYkwxLDu6jBxLDq28WzGs7jCaeTWjSlYVwA5zjn79MH3zDdnvvkvNI0cAuNC6NX6TJ5N2773EJSTAb7/Z9TjJnKP8cw673Q1h586ddOzYkSVLljBs2DB27dpFWFgY+/fv56677iry6wICAjh+/Ljt4/Ku8t+83RlXhqRJmqRJmopqunT9Eu9tf4+5CXO5brpO1wZdmd5nOt0Curlsk4rHyd5NjRo1kqv0l4LMOeRnT5qkSZrK33Q15yrzEubxbty7ZORk0PautkzvM52wRmG2d22Vuyk1Ff2iRegXLUKXmorm6Yn27LNYRo+GNm3kODn5nMNuiwXp6encdddd5Obm2t7+1alTJ2bOnEm/fkXf69vetzGyWq2kpKTQoEED9HrnvSJ4SajUAmr1qNQC0uMMss3ZzI+fz4ytM7iYdZGW/i2Z0XcGA5oM4NSpUy7VcjuueGyKYs8WuaVf6cicw/5UagHpcWYqtYBr9pitZr7Y9QWTN03mTOYZGvk2YlroNJ5o8QSnT522T0t8PMyZA999ByZT3t0NxoyBESPKdLHCsnDFY1MUR8057PZdq1WrFn379mXNmjUAHD9+nOPHj9O8eXN7PUSJWCwWdu/eXWDFxlWp1AJq9ajUAtLjSBarhcW7F9NsbjPejH6Tqm5V+fKRL9kzag8PhzyM1Wp1mZaScKVjUxyVWlyNzDnsT6UWkB5nplILuFaPpml8f+B7Wi5oyQs/v4DZambuQ3M59NIhnmn9DJpVK19LBd3VoKxc6dgUx1Etdr0bwieffMKIESMYN24cer2ehQsXUr++na+aKYQQCtA0jf8e+S8R6yPYn7afml41ef/+93mx04t4Gj0dPTwhnJ7MOYQQouQ2HN9A+LpwEs4k4O3uzeTek/nHff/Ax8On/Du/+a4Gnp5yVwNF2HWxIDg4uMAFHoQQQtxqa/JWwteFsy1lG15GLyK6RzC221iqe1Z39NCEcBky5xBCiOLtOruL8PXhrE1ai5vejVc6v8JbPd+idtXa5d95YacaREVV6qkGomLZdbHAGeh0Ovz9/W0X5XBlKrWAWj0qtYD0VJZ95/cxfv14fj7yMwadgVEdRzGx10Tq+tQt8muctaWsVOpRqUWUjUrPAZVaQHqcmUot4Lw9SReTeDvmbb7Z9w06dAxpM4QpvafQqEajIr+mRC25ufD993mLBH/evYDeveHll+Hhh8HoPH+9dNZjUxaOarHbBQ7LSi7qJIRQ3cnLJ4ncGMlXe75CQ+OJlk8wrc80mvo1dfTQhJOQ18LKId9nIYTqzl09x9TNU1m4YyFmq5mHmjzEzL4zaVunbfl2XNipBkOG5C0SyKkGLsUhFzh0FhaLhUOHDilzIQtVWkCtHpVaQHoqSvr1dF5f8zrN5jVjyZ4l9A3uS8LzCXz7l29LvFDgLC32olKPSi2ibFR6DqjUAtLjzFRqAefpuZJzhciYSBrPacz8hPl0rNuRjc9tZNWzq0q8UFBoS3x83qJAYCBMmgTu7nmnGpw6BYsWOfVCgbMcG3twVItyiwVWq5XDhw8XuB+lq1KpBdTqUakFpMferuVeY9rmaTSe05gPtn9Aq9qtWDtkLdFDo7mn3j2l2pejW+xNpR6VWkTZqPQcUKkFpMeZqdQCju/JMefw0faPaDynMVM2T6FB9QasfGIlcSPi6NWwV6n2ZWvJzoavv771rgYrVjjkrgZl5ehjY0+OanGek0qEEMLFmSwmPtv5GVM2TyH1aiqNazTm04GfMrjlYPQ65dZmhRBCCOEgFquFr//4mokbJ3Li8gnq+9Rn0aBFDG83HKO+jH/FS00l5N//xjhq1P9ONRg5Uk41uIPJYoEQQpSTVbOyfP9yJsRM4OjFo9xV9S4W9F/AyA4jcTO4OXp4QgghhFCEpmn8evRXwteF88f5P/D19CWqXxQvd34ZLzevsu00Ph7mzsX47bfcbTKhyV0NxJ+UWyzQ6/UEBgai17v+v+Kp1AJq9ajUAtJTHuuOrWPcunHsPLsTH3cfpvaZymv3vYa3u7dd9i/Hxnmp1CLKRqXngEotID3OTKUWqNye7ae2M27dODaf3Iyn0ZNx3cYxrts4anjVKP3OCrurQa9eHBs4kKCXX8bg4WHfwTuASs81R7XI3RCEEKIMdpzZQfj6cNYdW4e7wZ0xncYQ0SOCWlVqOXpowgXJa2HlkO+zEMIVHUw7SMSGCH489CN6nZ4R7UcQ2SuS+tXql35ncleDO94dfzeEXbt2KXPVS1VaQK0elVpAekoj8UIiT37/JPcsuof1x9YzrO0wjrx0hNkPzK6QhQI5Ns5LpRZRNio9B1RqAelxZiq1QMX2pGSkMOKnEbT6uBU/HvqRx5s/zv4X9/PpoE9Lv1CQkABDh972rgZybJyXo1qUWyywWq0kJycrc9VLVVpArR6VWkB6SuJs5llG/zyaFgta8N3+7xjYbCB7Ru1hyaNLCPINstvj3EyOjfNSqUWUjUrPAZVaQHqcmUotUDE9F7MuMjZ6LE3nNuWL3V/QM6gn20dsZ8UTK7i71t0l31Fu7v/uatC5MyxdCl27FnlXAzk2zstRLcpds0AIIewpIzuDd7a9w4e/fch103W6NuhKVL8ougd2d/TQhBBCCKGQ66brzPltDlHboricfZm2d7VlVr9ZPND4AXQ6Xcl3VNipBnJXA1EGslgghBCFyDZnsyBhAdO3TOdi1kVa+LdgZt+ZDGo2qHQv2EIIIYQQt2G2mvli1xdM3jSZM5lnaOTbiPn95/NUq6dKd+vlhIS8CxZ++y2YTHmnHMhdDUQ5KLdYoNfrCQkJUeaql6q0gFo9KrWA9NzIYrXwr73/InJjJMkZyTSo1oD373+foW2GYtAbKmC0tyfHxnmp1CLKRqXngEotID3OTKUWKF+PpmmsPLiSiA0RHLlwBP8q/sx5cA4v3PMC7gb3ku2kiLsa8Mor8PDDYCz5X/fk2DgvR7XI3RCEEIK8F+z/HvkvEesj2J+2n5peNYnoHsGYzmPwNHo6enhCcfJaWDnk+yyEcBYxx2MIXx9O/Ol4vN29ebPLm7ze5XV8PHxKtgO5q4Eoozv6bghms5nY2FjMZrOjh1JuKrWAWj0qtYD0bEveRo8ve/DIvx/h2KVjRHSPIOmVJN7o+obDFwru9GPjzFRqEWWj0nNApRaQHmemUguUvmd36m4eXPogoV+FsuvsLl7u/DJJryQR2TuyZAsFhd3VYNasAnc1qKwWZ6dSj6NalDsNQdM00tLScPAbJuxCpRZQq0elFrhze/ad30fE+gj+e+S/GHQGXuj4AhN7TaSeT71KGmnx7tRj4wpUahFlo9JzQKUWkB5nplILlLzn2KVjvB3zNl//8TU6dDzb+lmm9JlCcI3g4h/Ejqca3M6demxcgaNalFssEEKI4iRnJDMxZiJf7fkKDY3BLQYzLXQazfyaOXpoQgghhFDIuavnmLZ5Ggt3LMRkNfFQk4eY2Xcmbeu0LcEXn8s71eDjj+WuBsIhZLFACHHHuHD9AjO2zGB+wnxyLDmENgolql8U99S7x9FDE0IIIYRCruRc4f3Y93k/7n2uma7RuX5novpF0bth7+K/+Oa7GjRokHeqwciRclcDUakq5JoFX375JTqdjh9//LEidn9bBoOBdu3aYTBU/lXL7U2lFlCrR6UWUKtH0yAuzkBiYjfi4gxoGlzLvcb0zdMJnhPM7O2zaeHfgjVD1rBu6DqnXyhQ6diAWj0qtbgymXPYh0otID3OTKUWuLUnx5zDR9s/ovGcxkzZPIWAagGseGIF20dsv/1CQW4ufP01dOkCnTvD0qXQtSusWAHHjsG4cRW+UKD6sXFljmqx+90QTpw4wTPPPIOmaYwbN45HH330tp8vVyYWQtjLyZPwwANw/Hje9X5yzCZq9P0MrecU0rJSaVyjMdNCp/FEyydKd99iISqYvBaWjcw5hBDOwqpZ+fqPr3k75m1OXD5BfZ/6TOo9ieHthmPU3+bN3IWdavDss3mnGrQtwakKQpSSw+6GYLVaGTlyJHPnzsXDw8Oeuy4xs9nMhg0blLnqpSotoFaPSi2gRo+m5S0UJCVBrsnK1aDvMD3fgvOdXuTiRY15D83nwJgDPNXqKZdaKFDh2NxIpR6VWlyRzDnsS6UWkB5nplILgMlkYub3M2n3STuG/jCUy9mXieoXReLLiYzsMLLohYL8uxo0aACRkeDm9r+7Gnz2mUMWClQ7Nir1OKrFrtcsmD17Nt26daNjx46l+jqTyWT7b71ej8FgwGKxYLVab9luNpsLXAXSYDCg1+tt200mE5mZmVgsFoxGY4F9Axj/vFrozd/oora7ublhtVqxWCy2bTqdDqPRWOT2osZe2qb8ltzcXDRNK7DdFZs0TSvQc3OrKzXlHxtN0257/Fyl6eafG1dsio3Vc+KEAXPgOugXDvV2QI4PbJiKfsdrtHzQE51Vw2Q1uUyTXq+/7c+NKx4ni8VCZmYmJpPptr/LXaEp/+fGbDbf9uempE2idGTOIXOOO2XOAXmLY7f73elKTSrMOfK3bz25lfHrxrP11FY8jZ78s8s/Gd9jPD5uPrbWAk3XrqFbuRL9/Pno/7yrgdarF5YXX0QbNMh2VwPjn98PmXPInMPRcw67LRbs27ePFStWsHnz5tt+3uzZs5k9e7bt44yMDFatWmX7ODAwkPbt27N3716Sk5Nt20NCQrj77ruJj48nLS3Ntr1du3YEBQWxefNmMjMzbdsvXLhAvXr1WLt2bYED2KdPH7y8vAo8JkD//v3JysoiJibGts1oNDJgwADS09OJi4uzbffx8SE0NJSUlBR2795t2+7v70/Xrl1JTEzk8OHD5W6KjY0FIDo6GoAuXbpQu3Ztl22qV69egR5Xb8p383PPlZtOnz5NcHCwSzZF7/PE/PR70HAdmN0h7jXYEgHX/fHwhlWrDpCRkehSTSEhITRu3Div74afm6J+77lCU5MmTQDYuXMn6enpSjQlJSXRsmXLEr8+FdUkSk7mHDLnKK5JtTlH69atAYiNjeXq1atKNLnynMNY18jnxz/nh0M/oEdPWM0wnqzzJP1C+lHDqwYbNmwo0NS1cWP8V67E8uGHeF66hMXdnZP9+uE3aRIenTvnNa1d6/DjJHMO52+q7DmH3a5Z8PHHHzNlyhTbWwFTU1OpVq0akydPZvTo0UV+XUBAAMePH7d9bI9V/ujoaB588EE8PDyccmWopE1ZWVmsXbuWsLAw3NzcnHq1qyRNFouFVatW2XpubHW1pvznWf/+/dHpdC6zKllU080/N6600pp4MZHITZF8f/B70HSwZyhsnAyXG9q+xt0d1qwx062bazTduN1qtRb5c+NKxymfxWJhzZo13H///bbHd9Wm/J+bBx54AE9Pz3Kt8jdq1EjOpS8FmXPInKO4JpXmHJD3zoLVq1cX+bvTlZpcec5x6soppm6ZypK9S7BqVh4LeYy3u71N8s5kwsLC8PT0LPA7Qvf77+jnzUO3fDk6kwmtQQOso0Zh/dvfwM/PKZpu3C5zDudtctScw+4XOMzXu3dvXnvttUq/2JDVaiU9PZ1atWqh17vOecmFUakF1OpRqQVcsyf1aipTNk1h0c5FmK1mBjYdyL6PZnBqZ2tu/J1tNEKTJnDgAOh0jhtvWbnisbkdlXrs2SIX3isfmXOUn0otID3OzBVbLmZdZNbWWcyNn0u2OZteQb2Y1W8W9wXcd2tPbm7eHQzmzIHt2/N20KsXvPIKPPyw7VQDZ+SKx+Z2VOpx1JzDeZ+tZaTX66ldu7ajh2EXKrWAWj0qtYBr9WRkZ/Bu7Lt8sP0Drpuu0yWgC1H9ougR1IOT3QreDSE3F4KDYc0a11woANc6NiWhUo9KLaJsVHoOqNQC0uPMXKnluuk6c3+by6xts7icfZm2d7VlZt+ZPNjkQXR/TixsPYXd1WDECJe6q4ErHZuSUKnHUS0VtsSycePGYlf4K4LJZOKXX35R4sJRKrWAWj0qtYBr9GSbs/kg7gMaz2nM9C3TaejbkB+f/JFtf9tGj6AeAAQFwcGDeaccjBy5hzVrzBw4AIGBDltvIFwAACAASURBVB58ObjCsSkNlXpUanF1MucoP5VaQHqcmSu0mK1mFu1YRNO5TQlfH46vpy9LH1vKzhd28lDTh2wLBQDmuDhOhYaiBQY6zV0NysoVjk1pqNTjqBbl3lkAt5434spUagG1elRqAeftsVgtLN27lIkbJ5KckUxAtQC+CPuCYW2HYdAbbvl8nQ66ddPIyDhBt24tXPYdBTdy1mNTVir1qNQiykal54BKLSA9zsxZWzRNY+XBlby14S0OXziMfxV/PnrwI17o+AIexhtu0XrDqQbG7dsJAKw9eqB79VV45BGnPtWgOM56bMpKpR5HtLjuM1kIoTRN0/j5yM9EbIhg3/l91PCswbth7zKm0xi83LwcPTwhhBBCKGTjiY2MWzeO+NPxeLt7E9krkje6vIGPh8//PqmQUw2sf/0rm9q0ofuYMej/vCigEKqQxQIhhNPZlryNcevGsS1lG15GL8Z3H8/YbmPx9fR19NCEEEIIoZDdqbsZv348q4+uxk3vxsudX2ZCzwnUrnrD+eEJCTB3Lnz7bd67Cho0yDvVYORILNWqceWmW+oJoYoKuxtCSdn7ysSappGZmYmPj0+B84lckUotoFaPSi3gPD37z+8nYkME/zn8Hww6AyM7jGRir4nU86lXqv04S489qNQCavXYs0XuhlA5ZM5RNJVaQHqcmbO0HLt0jLdj3ubrP75Gh45nWj/DlD5TCK4RnPcJhd3VoGfPvLsa3HCqgbP02INKLaBWj6PmHEq+s8DLS523KKvUAmr1qNQCju1JzkgmcmMkX+35CqtmZXCLwUwLnUYzv2Zl3qdKx0elFlCrR6UWUTYqPQdUagHpcWaObDl/7TxTN01l4Y6FmKwmHmzyIDP7zqRdnXZ5n1CGuxrIsXFeKvU4osW1bzhZCLPZzKpVq5S4mIVKLaBWj0otUDk9mgZbt8LixXn/r2lw4foF3ljzBs3mNmPx7sX0btib+JHxfDf4u3ItFKh0fFRqAbV6VGoRZaPSc0ClFpAeZ+aolsycTCZtnETjOY2ZlzCP9nXbE/NcDL8++2veQkFCAgwblncLpfy7GsycCSkpt72rgRwb56VSj6NalHxngRDCuZw8CQ88AMePg7s75GjXqH7/h+Tc8w6Zpiu0r9OeWf1mERYc5vJvExNCCCGE88gx57Bwx0KmbZ5G2vU0QvxCmNF3Bo/d/Rg6kwm++abYUw2EuFPJT4AQokJpWt5CQVISmK0mctt8Dr0mk+6TitvFxnz93EKebPUEep1yb3QSQgghhINYNSvf/PENE2ImcOLyCer51OPTgZ/y1/Z/xZh2AaZOhU8+gbNnS3SqgRB3IlksEEJUqG3b4PgJDXPIcgidAH6JcLU2/DIP/nieBo+6o5c3EwghhBDCDjRNY/XR1YxfP5495/bg6+nLrL6zePnel6myez8M/1vBuxrMnAkjR0KtWo4euhBOR8m7IZjNZoxGo8u/nVmlFlCrR6UWqNiesR+v5/294Vjr/A45PrDtn7D9H5Drjbd33p2Ihg+360MqdXxUagG1euzZIndDqBwy5yiaSi0gPc6sIlu2n9pO+LpwNp3chKfRk1c6v0J459epsWpDhZ1qIMfGeanU46g5h5Lv+83KynL0EOxGpRZQq0elFrB/z86zO7n/X/fz7vl+WGvthbjX4KMk2Pw25HoDeYv6TZrY9WFtVDo+KrWAWj0qtYiyUek5oFILSI8zs3fLofRDPP7t43T5vAtbkrcwov0Ikp6MJWq7NzWat4dnnoHdu/NONdi9GzZtgv/7P7tdk0COjfNSqccRLcotFpjNZmJiYpS56qUqLaBWj0otYN+eoxeP8tT3T9Hx046sO7aOoW2GErzqMMb1H8B1f9vnGY0QHAzdupX7IW+h0vFRqQXU6lGpRZSNSs8BlVpAepyZPVtOXznN8/95npYLWvLDoR947O7HONrl33z2fS71Wt4HEyfmTThKcFeDspJj47xU6nFUi1yzQAhhF6lXU5m6aSqf7vwUs9XMgKYDmNF3Bm3uasPJDgXvhpCbm7dQsGYNuPi7woQQQghRyS5lXWLW1lnMiZ9DtjmbvvV78HF2P5p+tBrinsj7JLmrgRDlJj85QohyuZJzhXe3vcvs7bO5brpOl4AuRPWLokdQD9vnBAXBwYN5Fzs8ejTv1INu3WShQAghhBAll2XKYs5vc5i1bRaXsy/T26s5C9M60nThenRnt+Td1eBvf8u7q0G7do4erhAuT8nFAqNCq4cqtYBaPSq1QOl7csw5LEhYwPQt07mQdYHmtZozo+8MHgl5pNALr+h00L173v8qg0rHR6UWUKtHpRZRNio9B1RqAelxZqVtMVvNfLnrSyZtmsSZzDMMulKXD4+0pNHaBHS5ByEgwKF3NbiTj42zU6nHES3K3Q1BCFGxLFYLS/cuZeLGiSRnJBNQLYDJvSczrO0wjHp1fiELUZnktbByyPdZCNeiaRo/HPqBiPURHDt3mOFJPkze50fdP07kfYKcaiBEqd3Rd0OwWq2cP38eq9Xq6KGUm0otoFaPSi3w/+ydZ2AV1dawn1PSgIjSayIECEoxoUmoUhWwIOi1XRWwK2D9LjUCAiEoohRpil0BvSr6Sq5SQgelBekQQiChSAJSAoTklPl+xBwJJJCcnGRmNuv5I2eTM7Oe7D0zi+XsvQvno2kaP+/7mYjZEfT7sR8ZWRm80+0d9g3cx4DIAYYqFKjUPyq5gFo+KrkI3qHSGFDJBcTHyBTWZcXBFUTNjeKFj/vy2MIDnJxZjjnzMqie+GfOVIOEBJ/vauAN12PfmAWVfPRyUa5Y4HK5WL9+PS6XS+9Qio1KLqCWj0oucG2fdanr6PBpB+6Zdw9JfyUxrN0wDrx8gDfavEGQX1ApR3ttVOoflVxALR+VXATvUGkMqOQC4mNkruXyx59/0OOrHrwR04mB0zdw+H0r0cscBAfd+M+uBnPnGmZNguupb8yGSj56uRjnfwUKgmA4dqbtZHj8cH7a+xM2i41nmz3LqDtGUSO4ht6hCYIgCIKgEMmnkhm9eDiOb+cT/Tu0OQygQYf2OQsW9u4tUw0EoZTx2RV38eJFHn74YXbt2kVQUBBVqlRh5syZ1KtXz1enEAShBNA0WLvWwrJltSlf3kLHjnD4bCqjVozisz8+w625eeDWBxjXaRzhlcL1DlcQBEFyDkEwK5qGZe1aai9bhqV8eejYkbQL6Uz5cTh+cz9hwgY3Nc6BOzAABjwmuxoIgs74tDz37LPP0qNHDywWC9OnT+fpp59mxYoVvjzFNbFYLAQHB+e7GrvZUMkF1PJRxeXQIbjzTkhOtmG1NmXW56cpd1cs5xtNJ9udRaebOxHbNZZWNVvpHWqRUKV/QC0XUMtHJRczIjmHb1HJBcTHkPyddNiSk2lqtXLhk1nMb1WGcn+d583tTgJccLF6ZRjxGladdjXwBiX65m9UcgG1fPRyKbHdEDZt2sQDDzzAwYMHr/pzsjKxIOiDpsEtt0BSEjgt56H1FGg7EQLPEnAqgoUvxXJnve5K3GAFwejIs7B4SM4hCAbnkqQj2+0kvg5UzISWR3P+Or3FLVT6zxgs998vUw0EoYQpyrOwxK7GKVOmcN999xXqZx0Oh+fPVqsVm82Gy+XKs9pjbrvT6eTS+obNZsNqtXra3W43R44cISQkBLvdnufY8M/+lE6ns1Dtfn5+uN3uPItJWCwW7HZ7ge0FxV5Up+zsbA4fPkzNmjU9P2u1Wk3rBHDw4EGPz6WuZnNyu90cPXqU0NBQ3G53vv1ndKf1620cOJSN87ZP4I7REPwn/FUXfp6Fe9+/COyt4bzZaSqn3H5yuVwcOXKEmjVr4ufnl+cekYtZnCwWS4HXjRmdAI4ePUr16tXzFKLM6JT7vKlduzZ+fn7XfD5dy0nwHsk5JOdQOefIPc6RI0cKvHca3mn9elwHkthRwUm183BXEly0wd6KUPesnZvemYGzbVvQNGxutzmcJOcwvBNIzlHcnKNEigUxMTHs37+fZcuWXfF3kydPZvLkyZ7PZ86cIS4uzvM5JCSEyMhItm3bRkpKiqc9PDychg0bsmHDBtLT0z3tERERhIaGsmrVKjIyMjztgYGB1KhRg8WLF+fpwE6dOhEUFJTnnAA9e/YkMzOT5cuXe9rsdju9evXixIkTrF+/3tMeHBxM586dSU1NZevWrZ72ypUr06ZNGxITE9m7d2+xnVavXs25c+fYvn07AFFRUVSpUsW0TjVq1GD79u0eH7M7QU5lbvXq1XnGnhmcGjRowLw/duB8dgRUSIRzVWDRdNjyDLj8sQU6+f77bZw5k2oap/z6afv27QXeI8ziFBYWdsV1Y2anevXqsX//fg4fPsyJEyeUcMrMzKRRo0aFfj4V5CR4h+QcknNcDzlHkyZN2L59O/v37+fcuXOmcmqanY3fu6Oo4nJyWxocDoYVodDqCISfBGegnW3ff0/qmTOmcZKcwxxOknMUP+fw+TSESZMmMX/+fJYuXcqNN954zZ+vVasWycnJns/FrfI7HA6WLFnCXXfdRUBAgCErQ4V1yszMZPHixXTr1g0/Pz9DV7sK4+RyuYiLi/P4XOpqNqfccdazZ08sFotpqpIA8cnxjFwxkk3HNkFWOVj3/2D9a5BdzvM9f3+NX3910batZgqnS9udTifZ2dksWbKEbt26ERgYaLrq8aXtbre7wOvGjE4ul4tff/2V7t27e85vVqfc+8Cdd95JYGBgsar8derUkdfjvUByDsk5roecA3LeaPzll18KvHcazikrC8v333PhvYncsGUHAKtD4OCN0GsfVLj4z7k1f39cv/6K1ratsZ0k5zCdk+Qcxc85fPpmweTJk5k3b16hH9q55A7GS7HZbJ7XyC7l0o6+WnvuqzP5Hbuo7Var1XO8wrQXFLu3Tn5+fnniMqtT7oVxuU9RYy+oXe9+KkyMRW33pdMfaX8wdOlQlhxYgp/Vj8G3v8yiISM4tKsyl97j7HaoW9dCx452Ll+uwGhOBfVT7k0y93XA3Pbixl5Qe0k65T448rtuzOoEObHnd14zOuX+2Vf3CKFwSM6Rg+Qc10fOkZvoF3TvNIzT8ePY5szB/cE07MfT8bfBx5GQ+sR9PPXZdtrvSOHypMNSty72jh25POkwjNNV2iXnML4TSM5xtdivhc+KBYcPH+b111+nbt26dOrUCYCAgAB+//13X52iUFgsFipXrqzEomwquYBaPmZySforiZHLRzJ/x3wsWHi86eO81ektbr7xZl67JXc3BA2bzY3LZaVuXQu//nrFM9tUmKl/roVKLqCWj0ouZkNyDt+jkguIT6mzaRNMm4Y2fz6W7Gz+vAFmdIEjD/VgWO93GVD5Frg/ZzcELTkZt82G1eXCUrcuZk86DN83RUAlF1DLRy+XEtsNobDIysSCUDL8ee5Pxq4cy5wtc3C6nfSs35MJXSbQtGrTPD+nabB2LezfD/XqQdu2pn5mC4IpkWdh6SC/Z0HwIQ4HfPcdTJ0Kf8/NXhNq4f1WGn/d2Z7x3ScSVTsq73ck6RAE3SnKs/DKdyBMjsvlYs+ePXnmgpgVlVxALR8ju5zNOkt0fDT1ptZjxqYZtKjRgpX9VrLo0UVXFAog5xkdFeWides9REW5lHhmG7l/iopKLqCWj0ougneoNAZUcgHxKVGOH4exY+Hmm+GRR3Bu3sgXLfyJeA5eHNKYAeMXsWzAyisLBQAWC66oKPa0bo0rKkqJQoGh+qaYqOQCavno5aJcscDtdrN3794rts0wIyq5gFo+RnTJcmbx/m/vEzY1jHGrxxFSPoQfHvqBdQPW0SG0w1W/a0Sf4qCSj0ouoJaPSi6Cd6g0BlRyAfEpETZtgiefhJAQePNNzrkymdDzBqq97CT6seq8/sLnJDyXQM/6Pa/6qrQhXHyISj4quYBaPnq5lMjWiYIglB4ut4uvtn/Fm8vf5NCZQ9QMrsnce+fyxG1PYLfKJS4IgiAIgpfkM9XgRPNbGRtxmg9qHOWm4EpEt3+f51s8T4A9QOdgBUHwNfIvCUEwKZqmEZcYx9BlQ9mRtoObAm/i7a5vM7DVQIL8gvQOTxAEQRAEs3L8OMyZA7NmwdGjEBDAsX/1ZEjDVL6wbqesX1lGRL3J621e54aAG/SOVhCEEkK5YoHVaiUkJCTfLSnMhkouoJaP3i7rU9czZOkQVqesJsgexNC2QxnSbgg3BhZ++7BL0dvH16jko5ILqOWjkovgHSqNAZVcQHy85u9dDZg/H7KzoVYtjg0bxKshu1hwPA671c7A5gMZ2WEkVctV9eoU0jfGRSUXUMtHLxfZDUEQTMSu9F0MXzacH/f+iM1iY0DkAEZ1HEXNG2rqHZogCMVAnoWlg/yeBSEf8plqQPv2HB/wEP8pt44vds5DQ+ORxo8wttNYwiqE6RuvIAjF4rrfDSEhIUGZVS9VcQG1fErbJfVMKgN+HECTmU34ce+P9L2lLztf3Mmce+b4pFCgUt+AWj4quYBaPiq5CN6h0hhQyQXEp1BctqsBW7bAgAH8tW4ZLw+LpHbqq3y+82u6h3Vny7Nb+Lrv1z4pFEjfGBeVXEAtH71clCsWuN1uUlJSlFn1UhUXUMuntFxOXjjJG4vfoP60+nyy9RM6hnbk96d/57//+i/hlcJ9dh6V+gbU8lHJBdTyUclF8A6VxoBKLiA+V2Xz5jy7GmC1QkwM55L2MObxEEJX3MfUDVOJqBZB/BPx/PLvX4isHln88/6N9I1xUckF1PLRy0W5NQsEQQUuOC4w5bcpTFw7kTNZZ4ioFkFsl1i6h3W/6nZEgiAIgiAIV5A71WDaNFi3LqetfXsYPJjse3oye+tcxn7divQL6TSo2ICYzjH0uaWP5ByCcJ0jxQJBMBAOl4OPEz5mzMoxHDt3jDo31mFmr5k81PghrBblXgQSBEEQBKEkSUvL2dVg5kzPrgYMGACDBuG+rSnzd8wnenYTDpw6QPVy1Zl992wGRA6QrZcFQQAULBZYrVbCw8OVWfVSFRdQy8fXLpqm8d3u7xgRP4J9J/dRpWwVpvWYxrPNn8Xf5u+Tc1wNlfoG1PJRyQXU8lHJRfAOlcaASi4gPmzenLNg4SW7GhATA888g1axIr8m/cqwOf3Z+udWygeUZ0KXCQy+fTBl/MqUrAjSN0ZGJRdQy0cvF9kNQRB0Jj45nqFLh7Lx6EbK+Zfj/7X5f7za+lWCA4L1Dk0QhFJCnoWlg/yeBaUpaKrBoEHQuzf4+bHhyAaGLB3CioMrCLAFMKjVIIa1H0aFoAr6xi4IQqlxXe+G4HQ6WbduHU6nU+9Qio1KLqCWjy9cEo4lcOeXd9Ll8y5s/XMrg1sNJmlwEm92fLPUCwUq9Q2o5aOSC6jlo5KL4B0qjQGVXOA680lLg3Hj/tnVYPNm6N8/Z3eDVavgwQfZe+YAD3zzALd/dDurDq1iQMQAEgcl8k73d0q9UHBd9Y3JUMkF1PLRy0W5aQiappGeno7OL0z4BJVcQC2f4rgk/ZVE9PJo5u2YhwUL/276b9664y3q3FSnBCItHCr1Dajlo5ILqOWjkovgHSqNAZVc4DrxucpUAypVAuDI2SOMWTmGjxM+xqW56N2wN+M7j+fWyrfqZHKd9I1JUckF1PLRy0W5YoEgGJXj544zdtVYZm+ejdPtpGf9nkzoMoGmVZvqHZogCIIgCGagEFMNAE5lnmLi2olM+X0KF50XaR/SnoldJxJVO0rH4AVBMBtSLBCEEuZs1lkmrZvE5PWTOe84z+01b2di14l0vLmj3qEJgiAIgmAG0tJo8M032F988Z9dDfr3zykSREZ6fizTkcn0DdOZsGYCpy6eokmVJkzoMoGe9XvKNoiCIBQZ5YoFNpuNiIgIbDab3qEUG5VcQC2fwrhkObOYuWkm41eP58SFEzSs1JCYzjH0btjbcA9slfoG1PJRyQXU8lHJRfAOlcaASi6gkM/fUw3s8+dzS3Y2Ws2aOVMNnn4aKlf2/JjT7eSzrZ8xeuVoDp89TGj5UKbcNYVHmzyKzWqs34EyffM3Kvmo5AJq+ejlIrshCIKPcbldfL39a6KXR3PozCFqBtdkzB1jeDLiSdm3WBCEfJFnYekgv2fBFBRyqgHkzGNeuGchI+JHsPvEbiqVqcTI9iN5vsXzBNgDdBIQBMHI6LYbQmJiIm3atKFBgwa0bNmSnTt3+vLwhcLpdBIfH6/MqpequIBaPvm5aJrGon2LiJwdyRMLn+BM1hne7vo2iYMSearZU4YuFKjUN6CWj0ouoJaPSi5mRHIO36KSC5jU5yq7Gjjj44mvWBHnJW8mrjy4kjYft6HPN31IOZNCdIdokgYn8XLrlw1dKDBl31wFlXxUcgG1fPRy8em/Xp577jmeffZZ+vXrx3//+1/69evHxo0bfXmKa6JpGhkZGcqseqmKC6jlc7nL+tT1DFk6hNUpqwm0BzKk7RCGtB3CTUE36Rxp4VCpb0AtH5VcQC0flVzMiOQcvkUlFzCZz+W7GuQz1UBzODw+245vY9iyYcQlxmG32nmp5UtEd4imarmqOosUDlP1TSFQyUclF1DLRy8XnxUL0tLS2LRpE4sXLwagb9++DBw4kP3791OvXj1fnUYQDMWu9F2MWjWKH/f+iM1i45lmzzCq4yhq3lBT79AEQRCURXIOwfQ4HPD99zlFgtypBu3aweDBV0w1yOV41nH6/dSPeTvmoaHxcOOHGdtpLPUqyJgXBKFk8FmxIDU1lerVq2O35xzSYrEQEhJCSkrKNR/cDofD82er1YrNZsPlcuF2u69odzqdeSoqNpsNq9Xqac89Vu53Lz024Inv8lc4Cmr38/PD7Xbjcrk8bRaLBbvdXmB7QbF743SpQ267WZ1yuTR+szoln0xmWso0lv+xHLfm5v7w+xnTcQwNKzX0uJrJ6fLrpqAxaRan3DgdDscV9wizOeWS33VjRqfc715+TjM65cbkcrnw8/O75vPpWk5C4ZGcQ3KOaznlYricIy0N60cfYZ0zB8vRo2gBAWhPPonrxRchMjJfp/Tz6UxYO4FZe2bh1Jx0q9ONcZ3GEVktUnIOAzhJzmFcJ8k5ip9zlPok6smTJzN58mTP5zNnzhAXF+f5HBISQmRkJNu2bSMlJcXTHh4eTsOGDdmwYQPp6eme9oiICEJDQ1m1ahUZGRme9lOnTlGtWjUWL16cpwM7depEUFBQnnMC9OzZk8zMTJYvX+5ps9vt9OrVixMnTrB+/XpPe3BwMJ07dyY1NZWtW7d62itXrkybNm1ITExk7969xXZa93elecmSJQBERUVRpUoV0zrVrl2boKAgj48ZnQ4cO8B3x79j0YlFODQHd4TewQM3PkAtSy0ObDjAAQ6YzunSfjp69Ch16tS54noyq9OSJUsKvEeYxalBgwaUL18+z3VjZqcGDRoQFRVFQkJCoe7lZnBKTk7mlltuKfTzqSAnwfdIziE5h1FyjpSFC7F98AE1V6/G5nSSXaUK/jEx7Lj9dg5kZMCxY3DsWB6nlD9T+Cn9JxamLSTTnUlElQgeq/IY9e31ObblGMc4Zup+kpzDeE6ScxjfqbRzDp/thpCWlka9evX466+/sNvtaJpG9erVWbNmzVWr/LVq1SI5OdnzubhV/svbjVgZEifzOWW5s3h//fu8ve5tzmSdoWmVpkzoMoEe9XvgcrlM6aRiP4mTOJnVqU6dOrJKfxGQnEOuPVM4ORxY/y4S5E41cLdti/ull7Dcfz+2wMB8nVy4mLlhJjFrYki7kEb9CvUZ12kcDzZ6UHIOcRIncSrdnEPzIR07dtQ++eQTTdM07dtvv9WaN29+ze/UrFnTlyFo2dnZ2s8//6xlZ2f79Lh6oJKLppnTx+FyaLM3zdZqvFtDYzRanffraF9t+0q7mHXRdC5Xw4x9czVU8lHJRdPU8vGli6+fhdcDknP4FpVcNE1nn+PHNW3sWE2rUUPTQNMCAjStf39N27Llql9zuV3a19u+1upOqasxGq36pOrarI2ztGxntlL9o5KLpqnlo5KLpqnlo1fO4dNpCLNnz6Zfv37ExMRwww038Mknn/jy8IVGpdc6VXIB8/homsZ3u79jRPwI9p3cR+UylZl611Sea/Ec/jZ/HA6HaVwKi/gYF5VcQC0flVzMhuQcvkclF9DBZ/NmmDYN5s37Z1eD8ePhmWc8uxrkh6ZpLE5azLBlw0j4M4HyAeWJ6RzDy61fpoxfGQAcbrXyDpVcQC0flVxALR89XHxaLAgPD88zN0MQzEh8cjxDlw5l49GNlPMvx+iOo3kt6jWCA4L1Dk0QBEH4G8k5BEPgxa4Gl7LhyAaGLh3K8oPLCbAF8EbUGwxtN5SKZSqWQvCCIAhXp9QXOBQEo5JwLIFhy4bxa9Kv+Fn9GNxqMCM6jKBK2Sp6hyYIgiAIgpFIS4M5c2DmTDh6FAICoH9/GDQIIiOv+fW9J/YyIn4E3+3+DqvFyoCIAYy+YzS1y9cuheAFQRAKh88WOPSWWrVq+XRRJ03TyMjIIDg4GIvF4rPj6oFKLmBcn6S/koheHs28HfOwYOGxpo/x1h1vUeemOgV+x6gu3iI+xkUlF1DLx5cuvn4WCvkjOUfBqOQCJeiT31SDF1+85lSDXI5mHGXMijHMTZiLS3NxX/h9xHSJ4dbKt171eyr1j0ouoJaPSi6glo9eOYeSbxYEBQXpHYLPUMkFjOVz/Nxxxq4ay+zNs3G6nfSo14MJXSZwW7XbCvV9I7n4AvExLiq5gFo+KrkI3qHSGFDJBXzoU8ypBgCnL55m4pqJTPl9CpnOTNqHtCe2ayxtarcpdBgq9Y9KLqCWj0ouoJaPHi7WUj9jCeN0OomLi1NiMQuVXMA4PmezzjJq+SjCpobxwcYPaF69OSueXEHcY3GFLhQYxcVXiI9xUckF1PJRyUXwDpXGgEou4COftDQYNw5uvhkefjjnA72/EgAAIABJREFUrYJ+/XL+u3o1PPjgNQsFmY5M3ln7DnWn1CV2bSxhFcL4+ZGfWdlvZZEKBSr1j0ouoJaPSi6glo9eLkq+WSAI+ZHlzGLWplmMWz2OExdO0LBSQ2I6x9C7YW/Tv5okCIIgCIKP8HJXg0txup18/sfnjFoxisNnDxNaPpT373qfx5o8hs1qK2EBQRAE3yDFAkF5XG4XX2//mjdXvMnB0wepGVyTD+/5kH4R/bBb5RIQBEEQhOseH0w1gJx5xT/u/ZHhy4az+8RuKgZV5L073+OFFi8QYA8oQQFBEATfI/9SEpRF0zT+t/9/DFs2jG3Ht3Fj4I1M7DqRQa0GEeSnzvwlQRAEQRC8JD09Z1eDGTP+2dWgX7+cXQ2aNSvSoVYdWsXQpUNZf3g9ZfzKEN0hmjfavMENATeUTOyCIAgljJK7ITidTux2u+lfLVfJBUrX57fDvzFk6RBWHVpFoD2Qwa0GM7TdUG4Kusknx5e+MTYq+ajkAmr5+NJFdkMoHSTnKBiVXKAQPsXc1eBSth/fzrBlw1iUuAi71c6zzZ4lumM01cpV85GNWv2jkguo5aOSC6jlo1fOodwChwCZmZl6h+AzVHKBkvfZnb6b+xfcT9TcKNakrOHpyKdJHJTIxG4TfVYoyEX6xtio5KOSC6jlo5KL4B0qjQGVXCAfH4cDFiyAtm2hRQv47DNo1SqnLTkZhg8vUqHg4OmDPPHDE9w26zYWJS7i4cYPs/ul3XzQ6wOfFgpyUal/VHIBtXxUcgG1fPRwUa5Y4HQ6Wb58uTKrXqriAiXrc/jsYZ7+6Wkaz2zMwj0L6XNLH3a+uJMP7/2QWjfU8vn5pG+MjUo+KrmAWj4quQjeodIYUMkFLvNJT89ZoLCgXQ3+9a9Cr0kAkH4+nVd+eYXw6eF8se0LuoV1Y/Ozm5nXdx71KtQreR+To5ILqOWjkguo5aOXi6xZIJiavzL/InZNLNM2TOOi8yIdQzsysetEbq91u96hCYIgCIKgI+WTkrA99RR88w1kZXm1q8GlnMs+x+T1k5m0bhIZ2Rm0qNGC2C6xdKnbpQSiFwRB0B8pFgim5ILjAlN/n8rEtRM5ffE0t1W9jQldJnBXvbtMPydJEARBEAQv+XtXA9vUqdyRu6tB27Y5uxrcf3+R3iDIJduVzYebP+StVW+Rdj6N+hXqM7fzXB649QHJOQRBUBoliwV2uzpaKrlA8X2cbicfJ3zMmJVjOJpxlDo31mF6j+k80uQRrJbSnVUjfWNsVPJRyQXU8lHJRfAOlcaAqV0u29XAEhBAateuVBs/Hr9Wrbw6pFtzs2DHAkYuH8mBUweoXq46s3rNYkDkAPxsRS86FBdT989lqOQCavmo5AJq+ejhotxuCIKaaJrG97u/Z3j8cPad3EflMpWJ7hDNcy2ew9/mr3d4giAIxUKehaWD/J4VZMsWmDoV5s//Z6qBl7sa5KJpGouTFjNs2TAS/kzghoAbGNJ2CC/f/jJl/cv6WEAQBKF0ua53Q3C73aSlpeF2u/UOpdio5ALe+yxPXk7rua154NsHOJpxlNEdR5M0OIlBtw/SrVAgfWNsVPJRyQXU8lHJRfAOlcaAqVwcjpx1CNq1g+bNc3Y1aNEiz64G7ooVvfLZeGQjXb/oyl1f3cWu9F28HvU6BwYfYHj74boWCkzVP9dAJRdQy0clF1DLRy8X5YoFLpeL9evX43K59A6l2KjkAkX32frnVu768i46f96ZhGMJDGo1iKTBSYy6YxTBAcElHO3Vud77xuio5KOSC6jlo5KL4B0qjQFTuOTualCnDjz0EGzc+M+uBmvW5NnVoKg++07u48FvH6TVR61YcXAF/SP6s2/QPiZ1n0TFMhVLUKpwmKJ/ColKLqCWj0ouoJaPXi7qTOIQlOHAqQNEL4/m6+1fY8HCY00e461Ob1H3prp6hyYIgiAIQmmT31SDceNyphpUqVKsQx/NOMqYFWOYmzAXl+bi3vB7iekcQ6MqjXwUvCAIgnmRYoFgGI6fO864VeOYvXk2DreDu+rdxYQuE4ioFqF3aIIgCIIglCYOB/zwQ06RYO3anLZi7mpwKacvnubttW/z/m/vk+nMpF1IO2K7xNI2pK0PghcEQVAD5YoFFouF4OBgJbayUckFCvY5m3WWd9e9y7vr3+W84zytarZiYteJ3HHzHfoEWgiul74xKyr5qOQCavmo5CJ4h0pjwDAuubsazJwJR46Av3/OVINBg6BZs0IfpiCfi86LTN8wnZjVMZy6eIrGVRozocsEetXvpb/7VTBM//gAlVxALR+VXEAtH71cfLIbwtSpU5kzZw4WiwWLxcJ//vMf/v3vfxfqu7Iy8fVLljOL2ZtnM3bVWE5cOEF4xXBiusRwf8P7lbioBUEQCos8CwuP5ByKkt9Ugxde8MlUA8jZevnzPz5n1IpRHD57mJDyIYztNJbHmjyGzWrzgYAgCII5KPXdEBo1asTatWvZvn07ixYt4pVXXiEpKckXhy4ybrebQ4cOKbPqpSou8I+P0+Xky21f0vCDhrz8y8v42/z58J4P2fHiDvrc0scUhQJV+0Z8jIdKLqCWj0ouZkJyjpJBF5dr7WowYoTXhYJcH5fLxY97fqTpzKY89dNTZDoymdx9MnsH7uWJ254wTaFAxppxUclHJRdQy0cvF58UC7p06UL58uUBqF27NtWqVSM1NdUXhy4yLpeLrVu3KrPqpSouAE6nk49WfUSzOc14/IfHOX3xNLFdYkkclMjTzZ7GbjXPrBjV+kZ8jItKLqCWj0ouZkJyjpKhVF2KsKuBt7hcLr5a8xXtP21P7wW9OXTmECPbjyRpcBKvRr1KoD3QNy6lhIw146KSj0ouoJaPXi4+/9fZ0qVLOXXqFC1btiz0dxwOh+fPVqsVm82Gy+XKUznJbXc6nVw6c8Jms2G1Wj3tucfK/e6lxwaw23OUnU5nodr9/Pxwu915OsZisWC32wtsLyh2b5wudchtN6PTxmMbGbp0KKtTVxNoD+T11q/zn6j/UKlcJVM6XRpvQf1nJqfLrxuzO+XG6XA4rrhHmM0pl0vjNLNT7ncvP6cZnXJjcrlc+Pn5XfP5dC0noehIzmGynCMhAdsHH2BZsABLVhZazZq4x4zB/dRTUKVKjhMU22nXiV0Mjx9O3P447FY7zzd7nuHthlOzfE3D3k+u5XTp8/lSjHyPLMhJcg7jOuUiOYfxnPTKOQpVLIiKiiIxMTHfv0tISKB27doAbN++nf79+7NgwQLKli2b789PnjyZyZMnez6fOXOGuLg4z+eQkBAiIyPZtm0bKSkpnvbw8HAaNmzIhg0bSE9P97RHREQQGhrKqlWryMjI8LSfPHmSGjVqsHjx4jwd2KlTJ4KCgvKcE6Bnz55kZmayfPlyT5vdbqdXr16cOHGC9evXe9qDg4Pp3LkzqampbN261dNeuXJl2rRpQ2JiInv37i2207p16wBYsmQJkNMPVapUMZXT4YuH+fLYl/x25jesFivdKnTjoWoPUeliJdYvX29Kp8u5fOyZ2enIkSPUrVtXGaclS5YUeI8wi1NYWJjHJRczO9WrVw+ALVu2cOLECSWckpKSaNSoUaGfTwU5CTlIzqFYztG9OxmfforzvfeouHs3AKcbN+bG6GhSmjVj686dsGmTT5yOZx1n3p/zWHlqJRoa7W5sx2PVH6O6uzpbVm0hICrA8PeTgvqpSZMmAKxbt45z58552s1wj5ScwzxOknMY36m0cw6fLHAIsGvXLnr06MFHH31Et27dCv29WrVqkZyc7Plc3Cq/0+lk8+bNtGrVCn9/f0NWhgrrdPHiRTZt2kTz5s2x2+2GrnZd3n7wr4O8teotPtv2GW7NTe/w3rx1x1ucTTpLs2bNPLGZyenSfnI6nWzZsoXbb78dwDRVyYKcLr9uzFRpzc/J4XCwefNmmjdvTkBAgOmqx5e2a5rG77//nu91Y0Ynt9vN5s2badasGTbbP3OFzeiUe920bNmSgICAYlX569SpIwvvFQHJOUyQc6SnY/3oI2xz5sCRI2j+/mgPPYTrpZew/H0OXzn9efZPJqyZwKwts8h2ZdO1blfG3TEOZ4pTiZwDcvKMTZs2FXjvNJOT5BzGdZKcw7hOeuUcPikW7N69mx49ejB79mzuvPPOIn1XViZWi78y/yJ2TSzTNkzjovMiHUM7Ets1lta1WusdmiAIgmGRZ2HhkZzD4GzZAtOmwbx5Obsa1KgBL77os10NLuVc9jneW/8e76x7h4zsDJpXb05s11i61u3q0/MIgiCoRKnvhjB48GDOnDnDkCFDiIiIICIigl9//dUXhy4yLpeLPXv25KnYmBUzuVxwXGDimomETQ3jnXXv0KBiA+IejWP5k8s9hQIz+VwLlVxAfIyMSi6glo9KLmZCco6SoVgul+9q8Omn/+xqcPBgsXY1yPd0LgczNs6g3tR6vLniTaqWq8qCBxaw4ZkNnkKBSn0Davmo5AJq+ajkAmr56OXikwUOL53Xojdut5u9e/cSFhaW53UTM2IGF6fbyScJnzB65WiOZhzl5htvZlqPaTza5FGslry1KDP4FBaVXEB8jIxKLqCWj0ouZkJyjpLBK5f0dPjwQ5gxA44cAX9/ePJJGDQop2jg6xg1N9/s/IaR8SNJOpVEtXLVmNlrJk9FPoWfLe/uCSr1Dajlo5ILqOWjkguo5aOXi3n2qhMMhaZp/LDnB4YvG87ek3upXKYyU+6awnPNnyPAHqB3eIIgCIIglBT5TTUYN65EphpATs6x5MAShi4dSsKfCdwQcAPjO4/n5dtfpqx//otbCoIgCMVHigVCkVlxcAVDlw7l9yO/U9avLKM6juL1qNcJDgjWOzRBEARBEEoChwN++AGmToW1a3Pa2rbNeYugTx/w87v6971k45GNDF02lPjkePxt/rwe9TrD2g2jYpmKJXI+QRAE4R+UKxZYrVZCQkLy7BVqVozmsvXPrQxbNoxf9v+Cn9WPgS0HMrLDSKqWq1qo7xvNpzio5ALiY2RUcgG1fFRyEbxDpTFQoEspTzXIZd/JfYyMH8m3u77FarHSL6IfY+4YQ0j5kEJ9X6W+AbV8VHIBtXxUcgG1fPRy8dnWid4iKxMbnwOnDhC9PJqvt38NwKNNHmVsp7HUvamuzpEJgiCogTwLSwf5PReBhISctwhKYVeDSzmWcYwxK8fw0ZaPcGku7g2/l5jOMTSq0qjEzikIgnA9Ueq7IRgJl8tFQkKCMqte6umSdj6NQXGDaDi9IV9v/5q76t1FwnMJfNXnK68KBXr7+BKVXEB8jIxKLqCWj0ougneoNAZcLhcJGzbgnj8f2reHZs3+2dVg/vwS2dXgUk5fPM3wZcMJmxrG7M2ziaodxZr+a/jx4R+9KhSo1Deglo9KLqCWj0ouoJaPXi7KFQvcbjcpKSm43W69Qyk2erlkZGUwesVowqaGMX3jdCKrR7L8yeX877H/EVEtwuvjSt8YF/ExLiq5gFo+KrkI3qHMGEhPh5gYGvbsifWRR2DDhpypBps2wZo18NBDJbYmwUXnRSatm0TY1DAmrJlA3Zvq8tPDP7Gq3yrahrT1+rjK9M3fqOSjkguo5aOSC6jlo5eLcmsWCN6T5cxi9ubZjFs1jvQL6TSo2IAJXSZwf8P7sVgseocnCIIgCIIvuWSqgS0rCypUwDVmDLbnny/RqQYALreLz//4nFErRpF6NpWQ8iFM7j6Zfzf9Nzarubc4EwRBUAUpFgi4NTfzts9j5PKRHDx9kBrBNZhz9xz6R/bHbpUhIgiCIAjKkLurwbRpOW8NALRti/OFF1gSGEiPe+/FVkJvEUDONog/7f2J4fHD2ZW+iwpBFZjcfTIvtHyBQHtgiZ1XEARBKDrK/UvQarUSHh6uzKqXJemiaRq/7P+FYcuG8cfxP7gx8EZiu8Qy6PZBlPEr4/PzSd8YF/ExLiq5gFo+KrkI3mGqMXCNXQ0sLhcNEhNL1GVNyhqGLB3CutR1lPErw4j2I/h/bf4f5QPL+/xcpuqbQqCSj0ouoJaPSi6glo9eLrIbwnXK74d/Z8jSIaw8tJJAeyCDWg1iaLuhVAiqoHdogiAI1x3yLCwdrsvfc367GrzwAjz7bIlPNchl+/HtDI8fzs/7fsZutfNMs2eI7hBN9eDqpXJ+QRAE4R+u690QnE4n69atw+l06h1KsSkJlz0n9tD3m760ntua1SmreSryKRIHJfJ2t7dLvFAgfWNcxMe4qOQCavmo5CJ4h2HHgMMB33yTd1eD5s3/2dVg5MgrCgUl4XLo9CGeXPgkt826jZ/3/cxDjR5i90u7mdFrRokXCgzbN16iko9KLqCWj0ouoJaPXi7KTUPQNI309HR0fmHCJ/jS5cjZI4xeMZqPt36MW3Nzf8P7Gd95PLdUvsUHkRYO6RvjIj7GRSUXUMtHJRfBOww3Bq4x1eBq+NLlxIUTxKyO4YONH5DtyqZr3a7EdomleY2rx+BLDNc3xUQlH5VcQC0flVxALR+9XJQrFgh5OZV5itg1sUzdMJWLzot0CO1AbJdYompH6R2aIAiCIAi+IL+pBmPHlupUA4Dz2ed577f3eGfdO5zNOkvz6s2J7RpL17pdSy0GQRAEwXdIsUBRMh2ZTP19KrFrYzl98TRNqzZlQpcJ9KjXQ7ZBFARBEASzk9+uBm3awODB0KcPlOCOBleE4nLw4ZYPeWvlWxw/f5x6Ferx4T0f8sCtD2C1KDfjVRAE4bpBuWKBzWYjIiICm838e/R64+J0O/l066eMXjGaIxlHuPnGm5nWYxqPNnlU9wf29d43RkZ8jItKLqCWj0ougnfoMgaKMdXganjj4tbcfLPzG0bGjyTpVBLVylVjZq+ZPBX5FH620itW5Idq16dKPiq5gFo+KrmAWj56uchuCIqgaRo/7PmBEfEj2HNiD5XKVCK6QzTPNX+OAHuA3uEJgiAIV0GehaWDqX/PCQk5bxF8/bVuuxpcypKkJQxdNpQtx7ZwQ8AN/KfNf3il9SuU9S9b6rEIgiAIhee63w0hPj5emVUvC+Oy4uAKouZG0febvqSeSeXNDm+SNDiJwbcPNlSh4HrsG7MgPsZFJRdQy0clF8E7SnwMOBzw7bf/7GrwySfX3NXAWwrrsunoJrp+3pXuX3ZnR9oOXmv9GkmDkxjRYYShCgWqXZ8q+ajkAmr5qOQCavno5aLcNARN08jIyFBm1curufzx5x8MXTaUX/b/gp/Vj4EtBzKyw0iqlqtaypEWjuupb8yG+BgXlVxALR+VXATvKLExUEJTDa7GtVwSTyYyIn4E3+76FgsWnrztScbcMYbQG0NLJJ7iotr1qZKPSi6glo9KLqCWj14uyhULrgeSTyUTvTyar7d/jYbGo00eZWynsdS9qa7eoQmCIAiC4C2XTzWoXl2XXQ0u5VjGMd5a+RYfbvkQl+bingb3ENMlhsZVGusSjyAIglB6+LRYkJaWRpMmTYiKimLhwoW+PLQApJ1PY9yqcczaNAuH28GdYXcyocsEIqtH6h2aIAiCIJQqyuQcDgcsXJiz9eGluxoMGgR9+5bqrgaXcubiGd5e+zbv//4+FxwXaFu7LbFdY2kX0k6XeARBEITSx6cLHN5///1UqFCBkydPFvrB7evFhtxuNydOnKBSpUpYreZekiHXJSA4gPd/f59J6ydxLvscLWu0ZGLXiXSq00nvEIuEin2jgguIj5FRyQXU8vGli6kX3tMJ0+ccuVMNZs6Ew4dzpho8/HBOkaBFC5/FWFhyXcrdWI6Zm2YSsyaGvzL/olHlRkzoMoG7G9xtqq2XVbrXgFo+KrmAWj4quYBaPnrlHD57s2Du3LnUqVOHpk2b6lrht1qtVNHpVT1f49ScLEhewNhVY0m/kE6Dig2I6RxDn1v6mOqBnYtKfaOSC4iPkVHJBdTyUcnFbJg65zDgVAMADY24o3G8+dWbpJ5NpfYNtXm3+7s83vRxbFbzbTum2vWpko9KLqCWj0ouoJaPXi4+KRYkJycza9YsVq1axYIFC4r8fYfD4fmz1WrFZrPhcrlwu91XtDudzjwLO9hsNqxWq6fd4XAQHx9Pt27dCAgIyHNsALs9R/nylSQLavfz88PtduNyuTxtFosFu91eYHtBsRfWyWK1sGDnAkbGj+TgmYNUK1uNGT1m8FSzp/C3+5vSKfdnf/31Vzp37ozf369V5vaf2Zxyx9mdd96JxWLJd0yayeny66ag68wsTtnZ2cTHx9O5c2cCAwPz3CPM5uR2uwu8bszo5HK5WLZsGZ07d/ac36xOuddN165dCQwMvObz6VpOQuEwZc6RmYnlxx+xfvAB1rVrAdDatMH1wgtoffp4phr4Qak/n61WK4v2L2LY0mHsOrGLCoEVeLvL27zU6iXK+JfB4XDgdv1zHCNce4XpJ5VyDsgZF0uXLi3w3mkmJ8k5jOskOYdxnfTKOQpVLIiKiiIxMTHfv0tISGDAgAFMnz6doKCgax5r8uTJTJ482fP5zJkzxMXFeT6HhIQQGRnJtm3bSElJ8bSHh4fTsGFDNmzYQHp6uqc9IiKC0NBQVq1aRUZGhqf95MmT1KhRg8WLF+fpwE6dOhEUFJTnnAA9e/YkMzOT5cuXe9rsdju9evXixIkTrF+/3tMeHBxM586dSU1NZevWrZ72ypUr06ZNGxITE9m7d2+RnTRNY0vGFv576r/sPrWbsrayPF79ce6ufDcBxwI4/ddpqlSpYiqnS/upRo0auFwulixZ4mmPiooyrVMul489MzsdOXKEunXrKuO0ZMmSAu8RZnEKCwu74roxs1O9evVwOp1s2bKFEydOKOGUlJREo0aNCv18KshJyEGlnKNzkyaU+eornFOmEHTyJC67nZROnagRE8OFW2/NGad/X9t63CN3ndvF92e/Z1PaJgKtgTxY9UF6V+lN2ZNlOXf6HGWqlDH0tXc95RxNmjTB6XSybt06zp07p4ST5BzGc5Kcw/hOpZ1zFHvNgjNnzlC3bl2Cg4MBOHfuHBcuXCAqKoply5Zd8/u1atUiOTnZ89kXVf4lS5Zw1113merNgt8P/86I5SNYmbKSAFsAg28fzMvNX2bT6k1069YNPz8/Q1e78nPKr8ofFxfn8cltN6NT7jjr2bOnMm8WXHrdmKnSmp9TdnY2S5YsoVu3bkpU+Qu6bszolPt/+7p3765ElX/JkiXceeedxa7y16lTR9YsKASmyTkSErDNmIFl/nwsWVlo1avjfu453E8/DVWq6H6P3H58O9Ero1mUuAibxcazzZ/ljVZvsH3ddsk5DOrkdrv55ZdfCrx3mslJcg7jOknOYVwnvXKOYk9DKF++PCdPnvR8/vTTT1m4cGGR5hDmDsZLsdls2GxXzpG7tKOv1m61Wgs8dlHbrVar53iFaS8o9vza95zYw4j4EXy/+3usFisDIgYw+o7R1C5f29Opfn5+eeIyuhPk30+5F8blPkWNvaB2PZyu1m5Gp9xjmt0p9ybp5+dneqfcB0d+141ZnSAn9vzOa0an3D/76h4hFIyhcw6HA78CdjWw9O2Lzc+Py89Q2tfeodOHGLViFJ//8TkaGv9q9C/GdRpH/Yr1cTgcbGe75ByFbC9tp9ycsKB7pxmdzP58Bsk5ihp7Qe2Scxg35/DpbghQ9Ae3r1cm1jSNjIwMgoODDb0I4JGzRxi9YjSfbP0El+aid8PejO88nlsr3+r5GbO4FBaVfFRyAfExMiq5gFo+vnSR3RC8wwg5x7nkZMrNm4dl1ixD7GqQHycunCBmdQwfbPyAbFc2Xet2ZUKXCbSo8U98Kl2bID5GRiUXUMtHJRdQy0evnMPnxYKiUhIPbqfTid1uN+SgOJV5iolrJzLl9ylcdF6kQ2gHYrvEElU76oqfNbpLUVHJRyUXEB8jo5ILqOXjSxcpFpQOPv09nz6N9uqrMG8eltxdDV58UfddDS7lfPZ53vvtPd5Z9w5ns87SrHozYrvE0i2s2xU/q9K1CeJjZFRyAbV8VHIBtXz0yjnMveFkPjidTuLi4gy3aFSmI5O3175N3al1mbh2IvUr1GfRo4tY8eSKfAsFYFwXb1HJRyUXEB8jo5ILqOWjkovgBeXKQXw8f9Wpg/OLL+DgQRg50hCFAofLwcyNM6k3rR7Ry6OpUrYK8/vOZ+MzG/MtFIB641l8jItKLqCWj0ouoJaPXi4+2TpRKBin28lnWz9j1IpRHMk4Qmj5UKbeNZVHmzxqyn2LBUEQBEEA7Hacv/3Gmg0b6Nmzp2f7Qz1xa26+3fktI5ePZP9f+6latiozes7g6WZP42fTPz5BEATBXEixoITQNI2FexYyPH44e07soVKZSrx/5/s83+J5AuwBeocnCIIgCEJxqVRJ7wg8LD2wlKFLh7L52GaC/YMZ12kcr7R+hbL+ZfUOTRAEQTApUiwoAVYeXMnQZUP57fBvlPUrS3SHaN5o8wY3BNygd2iCIAiCICjE5qObGbpsKEsPLMXf5s+rrV9lePvhVCpjnEKGIAiCYE5kgUMf8seffzBs2TD+t/9/2K12nmv+HNEdoqlarqpXx1NpUQ5Qy0clFxAfI6OSC6jlIwscmg+Vco7Ek4mMXD6Sb3Z+gwULT9z2BGPuGEPojaFeHU+laxPEx8io5AJq+ajkAmr5yAKHPiQzM7NUz5d8KpnHf3icyNmR/G///3ik8SPseWkP03tO97pQkEtpu5Q0Kvmo5ALiY2RUcgG1fFRyEbyjtMfAsYxjvPDzC9w641a+2fkN9zS4h20vbOPT3p96XSjIRbXxLD7GRSUXUMtHJRdQy0cPF+WKBU6nk+XLl5fKSpHp59N5+X8vEz49nC+3fUn3sO5seXYLX/f9mrAKYcU+fmm6lAYq+ajkAuJjZFRyAbV8VHIRvKM0x8CZi2cYGT+SetPqMWvzLFrVbMXq/qv56ZGfaFylcbGPr9p4Fh/jopLV30L0AAASNUlEQVQLqOWjkguo5aOXi6xZ4AUZWRlMXj+ZSesncS77HC1rtCS2ayyd63TWOzRBEARBEBTiovMiMzbOIGZ1DCczT3Jr5VuZ0GUC9zS4x/Sv1QqCIAjGRooFRSDblc3sTbMZu2os6RfSaVCxAeM7j6fvLX3lgS0IgiAIgs9wuV18se0LRq0YRcqZFGrfUJtJ3SfxeNPHZetlQRAEoVRQslhgt/tWy625mb9jPtHLozlw6gDVy1Vn9t2z6R/Rv8T3Lfa1i96o5KOSC4iPkVHJBdTyUclF8A5fjwFN0/i/ff/H8GXD2Zm+kwpBFZjUbRIvtXqJQHugT891OaqNZ/ExLiq5gFo+KrmAWj56uCi3G4Iv0TSNX5N+ZdiyYWz9cyvlA8oztN1QBt8+mDJ+ZfQOTxAEQVAEIz8LVcLov+e1KWsZsnQIa1PXEmQP4tXWr/Kftv+hfGB5vUMTBEEQFOG63g3B7XaTlpaG2+0u1nE2HNlA58870+OrHuxO380bUW9w4OUDDG03tNQKBb5yMQoq+ajkAuJjZFRyAbV8VHIRvMNXY2BH2g7unXcv7T5px2+Hf+P55s+TNDiJ8V3Gl1qhQLXxLD7GRSUXUMtHJRdQy0cvF+WKBS6Xi/Xr1+Nyubz6/t4Te3ngmwe4/aPbWXVoFQMiBpA4KJF3ur9DhaAKPo726hTXxWio5KOSC4iPkVHJBdTyUclF8I7ijoGUMyn0/7E/TWc25f/2/R8P3vogu17axcy7Z1I9uLqPo706qo1n8TEuKrmAWj4quYBaPnq5qDOJo5gcOXuEMSvH8HHCx7g0F/eF30dMlxhurXyr3qEJgiAIgqAQJy+cJGZ1DB9s/IAsVxZd6nQhtmssLWq00Ds0QRAEQfBw3RcLTmWeYuLaiUz5fQoXnRdpH9Ke2K6xtKndRu/QBEEQBEFQiPPZ53n/t/d5e93bnM06S7PqzYjtEku3sG56hyYIgiAIV6BcscBisRAcHHzNrQwzHZlM3zCdCWsmcOriKZpUacKELhPoWb+nYbZBLKyLWVDJRyUXEB8jo5ILqOWjkovgHYUdAw6Xg7kJcxmzcgx/nvuTsJvCmHP3HB5s9CBWizFmhKo2nsXHuKjkAmr5qOQCavno5XLd7YbgdDv5bOtnjF45msNnDxNaPpSxncbyaJNHZd9iQRAEQReMvkq/KpT279mtufnvrv8yMn4kiX8lUrVsVd7s+CbPNHumxLdeFgRBEIT8uO53Qzh06NAVK0VqmsYPu3+g6cymPP1/T5PpyOS9O99j78C9PH7b44YsFBTkYlZU8lHJBcTHyKjkAmr5qOQieMfVxsDSA0tp9WErHvrvQ/x57k/GdhrL/sH7ebHli4YsFKg2nsXHuKjkAmr5qOQCavno5eKzYsF3331HkyZNaNy4MY0bN+bgwYO+OnSRcLlcbN26Nc9KkSsPrqTNx23o800fUs6kEN0hmgMvH+CV1q8QYA/QJc7CkJ+LmVHJRyUXEB8jo5ILqOWjkovZMHLOsfnoZrp90Y1uX3Rje9p2Xm39KgdePsDIDiMp519OlzgLg2rjWXyMi0ouoJaPSi6glo9eLj5ZsyAhIYERI0YQHx9PjRo1yMjIwGbT///Ubzu+jWHLhhGXGIfdauelli8R3SGaquWq6h2aIAiCIAheYNScY/9f+xkZP5IFOxdgwcITtz3BW3e8ReiNoXqHJgiCIAhe4ZNiwbvvvstrr71GjRo1AAgODvbFYb3meNZx+v3Uj3k75qGh8XDjhxnbaSz1KtTTNS5BEARBEIqH0XKOU45TDPplEHO3zsXpdnJ3g7uJ6RxDk6pNdI1LEARBEIqLT4oFu3bt4uabb6Zjx46cPXuWu+++m9GjRxe60u9wODx/tlqt2Gw2XC5XnjkZue1Op5NL12S02WxYrVacTicnL5xk7KqxzN4zG6fmpHtYd8Z2HEtktUjPeez2HGWn05knhoLa/fz8cLvdeV75sFgs2O32AtsLir2oTi6Xi4oVK3piym2/9Pd1tdiN5mSxWKhUqVKeeMzq5HQ6qVSpEhaLpcD+M5OT0+mkYsWKefzM7JTr43Q689wjzOh0tevGjE5ut5vKlStf8RqdGZ1yx1nuz1zt+VQYJ6FwGCXnOJd1jti1sUzZPYWL7otE1Ypi/B3jaRfSznMeI4zTwjpJzmFsJ03TrnrvNJOT5BzGdZKcw7hOeuUchSoWREVFkZiYmO/fJSQk4HQ6SUhI4JdffsHtdnPvvfcyc+ZMBg4ceMXPT548mcmTJ3s+nzlzhri4OM/nkJAQIiMj2bZtGykpKZ728PBwGjZsyIYNG0hPT/e0R0REEBoayqpVq0j9K5W5u+dyc+DNxHaNpW+zvixatIi4Lf8cv1OnTgQFBeU5J0DPnj3JzMxk+fLl//xy7HZ69erFiRMnWL9+vac9ODiYzp07k5qaytatWz3tlStXpk2bNiQmJrJ3795iO61bt46MjAwWL17s6YcqVaqwePHiPIPSTE5ZWVkeHxWc7HY78fHxZGRkKOF07Ngxz/WkgtPixYvz3CPM6mSxWPJcN2Z3atOmDevWrSvwXm42p+Tk5Gs+nwrjJORglpwj/XQ6c3bPobJ/ZcbeMZYnWj1BXFwccTsk5zCKk2o5R5s2bSTnMLCT5BzGdJKco3g5h0+2Trz77rvp06cPAwYMAOCDDz5g/fr1fPnll9f8bq1atUhOTvZ8Lk6VX9M0dh7fif20nfDwcPz8/AxZGSqsU1ZWFvv37ycsLAybzWboaldhnDRNY+/evdStW9fzf4DM6uRyuUhOTqZBgwZommaaqmRBTi6Xi6SkJBo0aICfn5+pKq35OTmdTpKSkggLC8Pf39901eNL24ECrxszOmmaxoEDB6hTp47Hz6xOuddN/fr18ff3L1aVv06dOrJ1YiExUs6xO203nIJbwm+RnMNgTirlHLkkJSUVeO80k5PkHMZ1Ask5jOqkV87hk2kIjz76KD/99BP9+vXD7XazePFi2rVrV+jv+/lduYVQ7oPqcnI7paD2RlUbEbc5jvDw8AKPXdR2q9WaZ4Bdq72g2IvqZLVa2b9/v+dm6k3sBbXr4eRwOEhMTKR+/fpXxGRGp3379lGvXj2fxF5Qe2k65Y61y9u9jb2g9tJw0jTN45N7TLM6Xe26MaOTw+Fg7969hIWF5XteszkV5ropqpNwdYyUc9xS5RbiNsVxS/gtBR67qO2Sc0jOAVc6XeveaTYnyTm8b5ecQ3KOq8Xu65zDJ1snPvzww9SqVYtGjRoRERFBjRo1ePnll31xaEEQBEEQBA+ScwiCIAhC6eCTNwusViuTJk1i0qRJvjicIAiCIAhCvkjOIQiCIAilg0/eLDASVquVkJCQfF/vMBsquYBaPiq5gPgYGZVcQC0flVwE71BpDKjkAuJjZFRyAbV8VHIBtXz0cvHJAofFoVatWrKokyAIgnBdI8/C0kF+z4IgCML1TlGeheYvs1yGy+UiISHhiv00zYhKLqCWj0ouID5GRiUXUMtHJRfBO1QaAyq5gPgYGZVcQC0flVxALR+9XJQrFrjdblJSUvJsPWFWVHIBtXxUcgHxMTIquYBaPiq5CN6h0hhQyQXEx8io5AJq+ajkAmr56OWiXLFAEARBEARBEARBEITiIcUCQRAEQRAEQRAEQRDyoPsChwEBAVSuXNmnxzx37hzlypXz6TH1QiUXUMtHJRcQHyOjkguo5eMrl/T0dLKysnwQkXA1JOe4Oiq5gPgYGZVcQC0flVxALR89cg7diwUlgUqrHavkAmr5qOQC4mNkVHIBtXxUchG8Q6UxoJILiI+RUckF1PJRyQXU8tHDRaYhCIIgCIIgCIIgCIKQBykWCIIgCIIgCIIgCIKQB9vo0aNH6x1ESRAVFaV3CD5DJRdQy0clFxAfI6OSC6jlo5KL4B0qjQGVXEB8jIxKLqCWj0ouoJZPabsouWaBIAiCIAiCIAiCIAjeI9MQBEEQBEEQBEEQBEHIgxQLBEEQBEEQBEEQBEHIg9LFgu+++44mTZrQuHFjGjduzMGDB/UOqVikpaVRtWpVevfurXcoxWLq1Kk0btyYJk2a0LRpU7788ku9QyoyiYmJtGnThgYNGtCyZUt27typd0hecfHiRXr37k2DBg247bbb6NatG/v379c7LJ/wySefYLFYWLhwod6heE1WVhYDBw6kfv36NGnShH//+996h1Qs4uLiaNasGRERETRu3JjPPvtM75AKzeDBg7n55puxWCxs3brV067KvUAoPpJzGBPJOYyD5BzGRnIOY2GYvENTlC1btmjh4eHakSNHNE3TtLNnz2rnz5/XOari0bt3b23AgAHafffdp3coxWLp0qXa6dOnNU3TtJSUFK1ixYra/v37dY6qaHTq1En75JNPNE3TtG+//VZr0aKFvgF5SWZmprZo0SLN7XZrmqZp06ZN0zp27KhvUD4gOTlZi4qK0lq3bq398MMPeofjNa+88oo2cOBAT/8cO3ZM54i8x+12azfddJP2xx9/aJqW00cBAQHa2bNndY6scKxcuVJLTU3VQkNDtYSEBE+7KvcCoXhIzmFcJOcwDpJzGBvJOYyFUfIOZd8sePfdd3nttdeoUaMGAMHBwZQpU0bnqLxn7ty51KlTh/bt2+sdSrHp0qUL5cuXB6B27dpUq1aN1NRUnaMqPGlpaWzatMlTce3bty+pqammrI4HBgbSs2dPLBYLAK1btzb9/w1zu908/fTTTJs2jYCAAL3D8Zrz588zd+5cxo8f7+mfatWq6RxV8bBYLJw+fRqAs2fPUrFiRdP0UYcOHahVq1aeNpXuBULxkJzDuEjOYRwk5zAuknMYD6PkHcoWC3bt2kVKSgodO3YkMjKS6OhoXC6X3mF5RXJyMrNmzWL8+PF6h+Jzli5dyqlTp2jZsqXeoRSa1NRUqlevjt1uB3JuRiEhIaSkpOgcWfGZMmUK9913n95hFIvJkyfTtm1bmjdvrncoxSIpKYkKFSoQExNDixYtaN++PcuWLdM7LK+xWCwsWLCAPn36EBoaSrt27fjss8/w9/fXOzSvUfleIBQNyTnMgeQcxkJyDuMgOYc50ON+YC+xI5cwUVFRJCYm5vt3CQkJOJ1OEhIS+OWXX3C73dx7773MnDmTgQMHlnKk1+ZaLgMGDGD69OkEBQWVcmTecS2f2rVrA7B9+3b69+/PggULKFu2bGmGKORDTEwM+/fvN/XDYceOHXz33XesWrVK71CKjdPp5NChQ9x6663ExsaSkJBAt27d2LlzJ1WrVtU7vCLjdDoZN24c33//PR06dGDjxo3ce++9bN++nUqVKukdniBcFck5jIvkHOZEcg5jITmHUCAlOslBR3r16qXNnTvX83n69OnaY489pmNE3nH69GmtQoUKWmhoqBYaGqpVrFhRCwoK0jp37qx3aMVi586dWkhIiLZ48WK9Qykyx48f14KDgzWHw6FpWs68qKpVq2qJiYk6R+Y977zzjta8eXPt1KlTeodSLGbMmKFVq1bNc70EBARolStX1mbMmKF3aEUmPT1ds1qtmtPp9LS1aNFCW/L/27tjVcWBMIrjLrYWimBjISgBwaBgROxioa2tbyD2vsUFn8EqVraCcB/BziIIoiBaWNmLhLOdbLbajRdmDP8fpEl1QmDm8EEm398GUyW33W7lOE7sXqfT+bg14M9vB9O4FiAZOofd6Bx2oXPYh85hL9O9I7XDgiAINB6PFUWRns+nRqORvr6+TMd622Kx+PjDhsIwVKVS0WazMR0lMd/3Y4eLeJ5nNtAb5vO52u227ve76Sg/zvf9jz5saDgcar1eS5JOp5OKxaKu16vhVMncbjflcjmFYShJOhwOKhQKOp/PhpP9n78PGkrTWoDk6Bz2onPYhc5hLzqHnUz3jtQOC6Io0mw2U71eV6PR0HQ61ePxMB3rbWnYuAeDgfL5vFqt1uv6tE18v9+r1+vJcRx5nqfdbmc6UiKXy0WZTEbVavX1LrrdrulYP+bTN+7j8ah+vy/XddVsNrVarUxHestyuXw9i+u6CoLAdKR/NplMVC6Xlc1mVSqVVKvVJKVnLcB76Bz2onPYg85hNzqHXWzpHb8kyfSnEAAAAAAAwB6p/RsCAAAAAABIhmEBAAAAAACIYVgAAAAAAABiGBYAAAAAAIAYhgUAAAAAACCGYQEAAAAAAIhhWAAAAAAAAGIYFgAAAAAAgBiGBQAAAAAAIOY3qZTOfaKPpZAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1280x320 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "## Case 2. Underdetermined matrix.\n",
    "A =  np.matrix([[2,1]])\n",
    "b =  np.array([2])\n",
    "x_under_ls = (A.transpose() * LA.inv(A*A.transpose())).dot(b)\n",
    "print(\"Case 3. Underdetermined size\", A.shape)\n",
    "print(\"Least squares solution:\", x_under_ls)\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "## Visualization of the least squares solution\n",
    "fig=plt.figure(figsize=(16, 4), dpi= 80, facecolor='w', edgecolor='k')\n",
    "plt.subplot(121)\n",
    "plt.plot(B[:,0], c, 'bo');\n",
    "line = np.arange(-6, 10, 0.1)\n",
    "\n",
    "f = x3_ls[0,0] * line + x3_ls[0,1]\n",
    "plt.plot(line, f, 'g-')\n",
    "\n",
    "plt.grid(linestyle='--', linewidth=1);\n",
    "plt.title(\"Perfect data\");\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(A[:,0], b, 'ro');\n",
    "# plt.plot(B[:,0], c, 'bo');\n",
    "\n",
    "plt.plot(line, f, 'g-')\n",
    "f = x_under_ls[0,0] * line +  x_under_ls[0,1]\n",
    "plt.plot(line, f, 'r-')\n",
    "\n",
    "plt.grid(linestyle='--', linewidth=1);\n",
    "plt.title(\"Red estimate, Green -truth\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Solving homogeneous systems $Ax=0$\n",
    "\n",
    "**Question**:\n",
    "    What is the relation between the singular values/vectors and the solution of the system of linear equations?\n",
    "**Answer:**\n",
    "    The singular/eigenvector that corresponds to the smallest singular/eigenvalue is an approximate solution for Ax=0 if A is overdetermined. For A being underdetermined, the smallest singular value/eigenvalue is zero and thus the corresponding vector is an exact solution.\n",
    "\n",
    "\n",
    "### Case 1. A squared has full rank\n",
    "A possible exact solution in $x = 0$. If the solution exists it should be an eigenvector that corresponds to the only zero eigenvalue. \n",
    "\n",
    "**Question** Can square matrix A have a non-trivial solution to $Ax=0$?\n",
    "**Answer** No, if square matrix (with full rank) has a solution it should be unique and it can only be 0 for $Ax=0$.\n",
    "\n",
    "### Case 2. A is underdetermined\n",
    "The singular vectors correspponding to the zero singular values of $A$ are the exact solution for $Ax=0$.\n",
    "\n",
    "### Case 3. A is overdetermined\n",
    "\n",
    "**Question** Can we find the $x$ if $A$ is overdetermined and $Ax=0$?\n",
    "**Answer** yes, in the least squares sense by minimizimg the $||Ax||^2$.\n",
    "\n",
    "Any vector $x$ that satisfies the $Ax=0$ is called to belong in the \"null space\" of A. A magical space where only those vectors live, which A turns into 0 :)  The simplest vector is zero vector, however \"somehow\" we are not interested in that.\n",
    "\n",
    "So we are interested to find some vector x from a null-space that is not a zero vector.\n",
    "\n",
    "**Claim (someone's)**  The solution $x$ is the eigenvector corresponding to a zero eigenvalue of $A^TA$.\n",
    "\n",
    "Proof (not mine):  Since no exact solution exists, we seek to find the solution that minimizes the error $Ax-0$.\n",
    "\n",
    "$||Ax||^2$ = opening norm = $(Ax)^TAx = x^TA^TAx$ subject to a constraint $x^Tx = 1$\n",
    "\n",
    "Using cool trick with Lagrange multipliers, we \"put\" the constraint into the minimization function.\n",
    "\n",
    "$$L(x) = x^TA^TAx - \\lambda(x^Tx-1)$$\n",
    "\n",
    "Now searching for minimum of $L(x)$ by taking the derivative over x and set it to 0.\n",
    "$A^TAx - \\lambda x =0$\n",
    "\n",
    "By inspecting the last expression, we can see that it suspiciously looks like eigenvectors definition $Av = \\lambda v$, only A here is $A^TA$. Since the eigenvalues are non-negative values, the only way to minimize L(x) is eigenvalue to be 0 (or closest to 0)? This basically should prove that the non-boring (non-zero) solution to the $Ax=0$ is the eigenvector that corresponds to the zero eigenvalue of $A^TA$\n",
    "\n",
    "\n",
    "There is a relation between singular and eigenvalues, so $Ax=0$ can also be solved with SVD, by decomposing the matrix $A$ and not $A^TA$. Note Cyrill: For a square, real, symmetric matrix with non-negative eigenvalues, the eigenvalues and singular values coincide, but it is not generally the case.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Having matrix of size  (2, 4) \n",
      " [[-1  1  2  4]\n",
      " [ 2  0  1 -7]]\n",
      "With rank 2\n",
      "Right eigenvectors\n",
      " [[-0.26627157 -0.05793858  0.79460159 -0.87165686]\n",
      " [ 0.0598853  -0.36066205 -0.52908598 -0.38942313]\n",
      " [ 0.01657747 -0.93062443  0.16161113  0.19986771]\n",
      " [ 0.96189313  0.02245401  0.25011633 -0.22049229]]\n",
      "Eigenvalues [ 7.02490310e+01  5.75096901e+00  5.64956686e-16 -7.60227229e-16]\n",
      "Check if true. Should equal to zero vector [[ 2.22044605e-16]\n",
      " [-6.66133815e-16]]\n"
     ]
    }
   ],
   "source": [
    "## Let's look t the example if this magic actually works\n",
    "A = np.matrix([[-1,1,2,4], [2,0,1,-7]])\n",
    "print(\"Having matrix of size \", A.shape, \"\\n\", A)\n",
    "print(\"With rank\", LA.matrix_rank(A))\n",
    "\n",
    "## let's find eigenvalues\n",
    "w, v = np.linalg.eig(A.transpose()*A)\n",
    "print(\"Right eigenvectors\\n\", v)\n",
    "print(\"Eigenvalues\", w)\n",
    "print(\"Check if true. Should equal to zero vector\", A*v[:,-1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary\n",
    "An attempt to summaries the above into a table.\n",
    "\n",
    "![table](data/system_linear.jpg)\n",
    "\n",
    "\n",
    "## What to do for large systems?\n",
    "\n",
    "**Computing the inverse $A^{-1}$ within solving $Ax=b$ or ways around computing $A^{-1}$ for large systems**\n",
    "\n",
    "Solving $Ax=b$ requires to compute $x = A^{-1}b$. This can be done in multiple ways. Here 3 common options:\n",
    "\n",
    "### Option 1: Invert $A$ explicitly \n",
    "\n",
    "Invert $A$ explicitly and compute $x = A^{-1}b$. This can be done for small systems but is slow.\n",
    "\n",
    "### Option 2: Solve $Ax=b$ using Cholesky decomposition \n",
    "\n",
    "The Cholesky decomposition $chol(A)$ of $A$ computes a lower triangular matrix $L$ with positive elements on the main diagonal such that $LL^T = A$. Its complexity is $O(n^3)$.\n",
    "\n",
    "To solve $Ax=b$ we solve $LL^Tx=b$ and this is done in two steps, solving two simpler linear systems, namely:\n",
    "\n",
    "First: Solve $Lz=b$ w.r.t. $z$, which is easy as $L$ is a lower triangular matrix. We obtain $z$ in $O(n^2)$.\n",
    "\n",
    "Second: Solve $L^Tx=z$ which yields $x$. This is again easy as $L^T$ is an upper triangular matrix.\n",
    "\n",
    "Note that if $A$ is sparse also $L$ shows a sparsity pattern and in this case, $chol(A)$ can be computed faster than $O(n^3)$. This is for example the case for SLAM of BA problems.\n",
    "\n",
    "**Variants:** In a similar way, one can use LU decomposition or QR decomposition. If matrix A is positive definite use Cholesky decomposition. For square matrices, one case use LU decomposition, for non-square matrices, QR decomposition.\n",
    "\n",
    "**Note:** I the same way, we can also to solve $x = (A^T A)^{-1} A^T b$ by:\n",
    "\n",
    "$LL^T = chol(A^T A)$\n",
    "\n",
    "$b' = A^T b$\n",
    "\n",
    "Solve $Lz=b'$ w.r.t. $z$\n",
    "\n",
    "Solve $L^Tx=z$ which yields $x$\n",
    "\n",
    "\n",
    "### Option 3: Solve $Ax=b$ using conjugate gradients\n",
    "\n",
    "Conjugate gradients is an algorithm for numerically solving Ax=b for cases in which A is symmetric and positive-definite. Conjugate gradients is often implemented as an iterative algorithm and is applicable to sparse systems that are too large to be handled by a direct implementation or Cholesky decomposition. It can be seen as a glorified gradient descent where we are not following the gradients but so-called conjugate vectors.\n",
    "\n",
    "The key idea of iterative CG is to reformulate $Ax=b$ as $Ax-b=0$. Then we can multiply $x^T$ from the left and obtain\n",
    "$x^TAx-x^Tb=0$. Based on that, iterative CG aims as minimizes the function $f(x) = x^TAx-x^Tb$ iteratively. As this is a quadratic form we can do that in some smart way. See Wikipedia for details: https://en.wikipedia.org/wiki/Conjugate_gradient_method.\n",
    "\n",
    "Note: There are further options such as Gauss-Seidel relaxation but for really large systems, conjugate gradients is typically the way to go.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
